为啥 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 告诉我这个小部件不存在?

为啥我不能在 pyqt5 gui 中嵌入的 matplotlib 颜色图中成功绘制感兴趣区域?

为啥在 PyQt5 中打开新窗口时我的应用程序会关闭?

为啥当我放大Windows尺寸时,pyqt5中笔没有在鼠标坐标点上绘画