Radosław Posted July 6 Report Share Posted July 6 Gdy tak ustawię to `.move` dla QMainWindow cz Qwidget nie jest w stanie ustawić okna na wybranej przez mnie pozycji. Gdy ustawię w KDE: otwieraj okna przypadkowo to pozycjonowanie w Qt przez .move działa. Czy to normalne? Dla jasności to moje okno Qt mogę przestawić w "Zasadach okien" robiąc regułę, ale to przecież nie o to chodzi. Radek Głębicki Link to comment Share on other sites More sharing options...
tomcio Posted July 7 Report Share Posted July 7 Wydaje mi się, że to normalne. W końcu to window managery są od tego, aby decydować gdzie i jak rozmieszczać okna. Link to comment Share on other sites More sharing options...
Radosław Posted July 7 Author Report Share Posted July 7 Ale dla okien systemowych, a nie obcych. A nawet niech będzie. Tylko dlaczego funkcja .move(x,y) dla widgetu Qt nie może ich przestawić? Tu leży mój problem. Chcę zrobić sobie prosty toolbwr na boku ekranu i kiszka. Link to comment Share on other sites More sharing options...
@sunrise Posted July 7 Report Share Posted July 7 W ogóle nie pokazałeś nawet linii kodu, więc ciężko stwierdzić co jest nie tak. U mnie np. taki kod # importing the required libraries from PyQt5.QtGui import * from PyQt5.QtWidgets import * import sys class Window(QMainWindow): def __init__(self): super().__init__() # set the title self.setWindowTitle("Move") # setting the geometry of window self.setGeometry(0, 0, 200, 600) # creating a label widget self.widget = QLabel('Label', self) # moving the widget # move(left, top) self.widget.move(50, 50) # setting the window position self.move(50, 50) # show all the widgets self.show() # create pyqt5 app App = QApplication(sys.argv) # create the instance of our Window window = Window() # start the app sys.exit(App.exec()) działa bez problemu (MATE Desktop) Link to comment Share on other sites More sharing options...
Radosław Posted July 7 Author Report Share Posted July 7 Mój kod działa jak wyłączę w KDE środkowanie nowo otwartych okien. To wina KDE. Jestem tylko zaskoczony, że działa również na zewnętrzne programy. One sa Qt jak KDE i pewnie dlatego. Link to comment Share on other sites More sharing options...
Radosław Posted July 8 Author Report Share Posted July 8 No ciekawe. Odpaliłem F30 na starym dysku. Tam po ustawieniu: wyśrodkowane, w ustawieniach KDE wszystko jest ok. Znaczy się mój program startuje tam gdzie chcę, czyli reaguje na .move(). To oznacza, że nowe KDE z F40 jest w tej kwestii zmienione, wg mnie na gorsze. I zniknęła opcja "Mądre" coby to nie znaczyło. Czekam na opcje "Użyj AI" z wyborem: Meta, Google, OpenAI. ;-D Czyli muszę używać: "Przypadkowe" Czyli mój problem został rozwiązany, albo i nie. Link to comment Share on other sites More sharing options...
Radosław Posted July 8 Author Report Share Posted July 8 Takie coś znalazłem o moim. chyba, problemie (taki programik jak mój): A dalej: Czyli to coś z Wayland? Link to comment Share on other sites More sharing options...
Radosław Posted July 13 Author Report Share Posted July 13 Generalnie sprawa jest jasna. Wayland nie obsługuje .move() lub .setGeometry() jeśli chodzi o pozycję okna. :-( Ma się używać pozycji dostarczonych przez Wayland. Środek, krawędzie, przypadkowe. itp. Mnie jedynie zastanawia jak w KDE w Ustawieniach w Zasadach okien można wymusić przeniesienie danego okna na pozycję (x,y) ? Tak teraz robię. I jeszcze Tkinter jest w stanie pozycjonować właściwie. Więc coś tu nie tego. Pozdrawiam Radek Głębicki Link to comment Share on other sites More sharing options...
tomcio Posted July 14 Report Share Posted July 14 16 godzin temu, Radosław napisał: I jeszcze Tkinter jest w stanie pozycjonować właściwie. Więc coś tu nie tego. Właśnie że ten tego Qt oraz PyQt obsługują natywnie Waylanda, Tkinter go nie obsługuje, jest ogarniany przez XWaylanda, więc można w nim w zasadzie wszystko, co w X11. Odpal sobie konsolę debugowania Kwin to zobaczysz różnicę qdbus org.kde.KWin /KWin org.kde.KWin.showDebugConsole 16 godzin temu, Radosław napisał: Ma się używać pozycji dostarczonych przez Wayland. Środek, krawędzie, przypadkowe. itp. No nie do końca, o tym decyduje window manager – w przypadku KDE jest to Kwin, w przypadku Gnome jest to Mutter i tak dalej. I żeby dodać pikanterii całej sprawie każdy window manager (czy bardziej precyzyjnie wayland compositor) może mieć różny zestaw opcji albo nawet nie mieć ich wcale. Link to comment Share on other sites More sharing options...
Radosław Posted July 14 Author Report Share Posted July 14 A jak to się ma do "Zasad okien" i możliwości ustawiania okna tam? I jeśli znasz ten problem to jest jakieś rozwiązanie? Wymusić otwarcie okna QT przez XWayland? Pozdrawiam Radek Głębicki Link to comment Share on other sites More sharing options...
tomcio Posted July 14 Report Share Posted July 14 Godzinę temu, Radosław napisał: Wymusić otwarcie okna QT przez XWayland? Zmienna QT_QPA_PLATFORM="xcb" Jeśli mowa o natywnym Waylandzie to masz tylko dwa wyjścia (albo trzy) 1. poszperać w dokumentacji kwin/plasmy – być może jest to obsługiwane, tylko trzeba się do tego w jakiś sposób odwołać, jeśli okaże się, że faktycznie jest to niemożliwe to zgłosić feature request 2. napisać własnego kompozytora, który będzie miał taką funkcjonalność (plus funkcjonalność kwin, jeśli nadal chciałbyś korzystać z KDE) 3. Skorzystać z layer-shell – w teorii jest on przygotowany pod tworzenie różnego rodzaju paneli, widgetów itp. W jaki sposób w praktyce wykorzystać – nie mam pojęcia, ale odsyłam tu https://invent.kde.org/plasma/layer-shell-qt Co do samego wykorzystania to poprzez tą zmienną – tylko uwaga mi to otwiera program na pierwszym planie na całym monitorze i w dodatku bez kontrolek sterowania oknem – jedyny sposób zamknięcia to ubicie procesu. No i warto mieć dwa monitory QT_WAYLAND_SHELL_INTEGRATION=layer-shell O więcej mnie nie pytaj, dalej raczej nie będę w stanie pomóc – o problemie usłyszałem dopiero od ciebie, a w dodatku z programowaniem mam niewiele wspólnego – od potrafię napisać prosty skrypt w pythonie czy bashu, ale niewiele więcej 1 Link to comment Share on other sites More sharing options...
Radosław Posted July 14 Author Report Share Posted July 14 Ustawienie zmiennej działa. Okno się robi tak bardzo X, że nawet ikonkę dostało od X11. Ale pojawiły się problemy przez to, że "wypadło" kwin. Pierwszy to jest na liście przełączania okien (alt + tab), a drugie to lądowało na spodzie. Dla drugiego problemu to: .setWindowFlags(Qt.Window | Qt.CustomizeWindowHint | Qt.WindowStaysOnTopHint) Dzięki za podpowiedzi. Pozostałe są raczej zaawansowane więc nie dla mnie. Dzięki. Jednak muszę ustawiać za pomocą "Zasad okien". Będę z tym żył. Pozdrawiam Radek Głębicki Link to comment Share on other sites More sharing options...
Radosław Posted 20 hours ago Author Report Share Posted 20 hours ago Wyciągam z tyłów i mam pytanko. Jak przeedytować "Zasady okien" kwin (gdzieś są zapisane?), a następnie odświeżyć? Ktoś coś wie? Pozdrawiam Radek Głębicki Link to comment Share on other sites More sharing options...
tomcio Posted 7 hours ago Report Share Posted 7 hours ago 13 godzin temu, Radosław napisał: "Zasady okien" kwin (gdzieś są zapisane?), .config/kwinrulesrc 13 godzin temu, Radosław napisał: a następnie odświeżyć? qdbus org.kde.KWin /KWin reconfigure Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now