为啥 PyQt5 QWindow.setScreen() 不工作?
Posted
技术标签:
【中文标题】为啥 PyQt5 QWindow.setScreen() 不工作?【英文标题】:why PyQt5 QWindow.setScreen() not working?为什么 PyQt5 QWindow.setScreen() 不工作? 【发布时间】:2019-04-16 18:01:40 【问题描述】:我正在尝试在辅助屏幕上运行 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])
我的应用只在我的主屏幕上运行。
P.S.:我的 topLevelWindow 是 QQuickWindow 而不是 QWindow。
【问题讨论】:
qW.windowHandle().setScreen(self.app.screens()[1])
工作吗?
不,它没有,它说 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])
【讨论】:
以上是关于为啥 PyQt5 QWindow.setScreen() 不工作?的主要内容,如果未能解决你的问题,请参考以下文章
PyQt5:为啥我只能为 QTableWidget 单元格使用两种颜色?
当我在 PyQt5 窗口中嵌入 Matplotlib 图形时,为啥有两个重复的轴标签?
如果我知道它存在,为啥我 pyqt5 告诉我这个小部件不存在?