【发布时间】:2021-10-15 10:11:37
【问题描述】:
我想知道如何明确定义要启动的应用程序的监视器。
申请结果:
qt.qpa.window: Window position QRect(468,-22 504x896) outside any known screen, using
primary screen
执行时。
窗口对象的定义如下:
class MainWindow(QMainWindow):
def center(self):
"""
Center window in middle of screen
"""
qr = self.frameGeometry()
cp = self.screen().availableGeometry().center()
qr.moveCenter(cp)
self.move(qr.topLeft())
def __init__(self) -> None:
super().__init__()
self.center()
self.show()
def main():
app = QApplication(sys.argv)
# Init window
window = MainWindow()
sys.exit(app.exec())
我在一台 Mac 笔记本电脑上,我有多个虚拟桌面,PyQt 假定这些桌面是物理监视器。
如何明确设置应用程序在主/第一台显示器上打开?
【问题讨论】:
-
print(self.screen().availableGeometry())的输出是什么 -
@eyllanesc
PyQt6.QtCore.QRect(0, 25, 1440, 804) -
@FreddyMcloughlan 是位置的初始计算错误,还是
move()没有按预期工作?计算所需位置的每个阶段的实际值是多少? -
@ekhumoro 它在我定义
Qwindow对象并设置主屏幕之前返回PyQt6.QtCore.QRect(0, 25, 1440, 801)。这实际上与原始评论不同。我如何检查/修复move()? -
@FreddyMcloughlan
cp和qr的值是多少(在调用moveCenter()之前和之后)?另外,窗口在屏幕上显示后的实际位置是什么?您实际上还没有说它是否最终处于预期位置。 “问题”仅仅是 Qt 打印该消息 - 还是究竟是什么?
标签: python python-3.x pyqt pyqt6