почему PyQt5 QWindow.setScreen() не работает?

#python #pyqt #pyqt5

#python #pyqt #pyqt5

Вопрос:

Я пытаюсь запустить приложение Qt QML на дополнительном экране, но оно не работает. Я использую PyCharm как IDE и PyQt5.

У меня есть второй экран, подключенный физически. и приложение корректно работает на основном экране, но даже если я попытаюсь установить экран окна на дополнительный, он не работает. Уже пробовал:

 self.app = QGuiApplication(sys.argv)
self.engine = QQmlApplicationEngine()
# ...
self.engine.load(my_qml_name)
# ...
qW = QWindow(self.app.topLevelWindows()[0])
qW.setScreen(self.app.screens()[1])
 

Я запускаю приложение только на своем основном экране.

PS: Мое окно верхнего уровня — это QQuickWindow, а не QWindow.

Комментарии:

1. qW.windowHandle().setScreen(self.app.screens()[1]) работает ли?

2. Нет, это не так, в нем говорится, что qW не имеет атрибута WindowHandle() .

Ответ №1:

не приводите self.app.topLevelWindows()[0] ни к чему.

Код должен выглядеть следующим образом

 self.app = QGuiApplication(sys.argv)
self.engine = QQmlApplicationEngine()
# ...
self.engine.load(my_qml_name)
# ...
qW = self.app.topLevelWindows()[0]
qW.setScreen(self.app.screens()[1])