python - 为 PyQt6 应用程序定义监视器
问题描述
我想知道如何明确定义要启动的应用程序的监视器。
该应用程序产生:
qt.qpa.window: Window position QRect(468,-22 504x896) outside any known screen, using
primary screen
执行时。
window 对象的定义如下:
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 假设它们是物理监视器。
如何明确设置应用程序在主/第一台显示器上打开?
解决方案
你可以试试下面这样的东西。(我没有环境。我没有尝试。)。如果这不起作用,请告诉我。我将删除此帖子。
#MAINWINDOW OBJECT
window = MainWindow()
#GET QWINDOW OBJECT
win = window.windowHandle()
#SET PRIMARY SCREEN
win.setScreen(app.primaryScreen()) #app is your application object.
文档中也有注释
注意:如果屏幕是多个屏幕的虚拟桌面的一部分,则窗口不会自动移动到 newScreen。要相对于屏幕放置窗口,请使用屏幕的 topLeft() 位置。
您也可以尝试获取所有可用的屏幕
screens = app.screens()
也许你可以迭代它们并设置你想要的屏幕。
win.setScreen(screens[0]) #example
推荐阅读
- python - RGB PCA图像的反向生成不起作用
- opencv - .exe不断崩溃,打开简历
- android - 如何使用 SharedPreferences 将数据从活动传递到另一个活动
- spring-boot - Spring Data Rest:使用 CURL 测试 deleteByName
- angular - 如何截断文本?
- android - RecyclerView OnClickListener 仅将逻辑应用于最终条目,仅此而已
- java - 如何通过点击最新文件查看备份文件列表?
- eclipse - Eclipse 未在 gradle 项目下显示 generateProto 任务
- spring-boot - 如何停止发布指标但仍可在 Spring Boot 千分尺中的 /metrics 下访问?
- three.js - 如何在three.js中使用3X3矩阵进行旋转