Pyqt4 显示屏幕中间的QualWindows 我想在屏幕中间显示我的项目主窗口。当我调用“Sudio.Suffor()”时,窗口就显示在屏幕中间。

Pyqt4 显示屏幕中间的QualWindows 我想在屏幕中间显示我的项目主窗口。当我调用“Sudio.Suffor()”时,窗口就显示在屏幕中间。,pyqt4,qmainwindow,Pyqt4,Qmainwindow,首先,我建议不要试图对用户强制设置窗口位置,并让系统的窗口管理器决定它应该去哪里。如果您真的坚持自己定位它(也许您正在为一个信息亭编程),您可以在前面关于stackoverflow的问题中找到 一个稍微优雅一点的计算方法是 在进行此计算时,重要的是要在正确的时间进行计算,在Qt调整了所有内容的大小之后,在屏幕上显示之前。一种可能有帮助的方法是在计时器的插槽中进行屏幕定位 我知道你已经解决了这个问题,但我为那些有同样问题的人做了这个回答。我之所以发布它,主要是因为您要求pyQt,而另一个答案是Qt

首先,我建议不要试图对用户强制设置窗口位置,并让系统的窗口管理器决定它应该去哪里。如果您真的坚持自己定位它(也许您正在为一个信息亭编程),您可以在前面关于stackoverflow的问题中找到

一个稍微优雅一点的计算方法是


在进行此计算时,重要的是要在正确的时间进行计算,在Qt调整了所有内容的大小之后,在屏幕上显示之前。一种可能有帮助的方法是在计时器的插槽中进行屏幕定位

我知道你已经解决了这个问题,但我为那些有同样问题的人做了这个回答。我之所以发布它,主要是因为您要求pyQt,而另一个答案是Qt(C++)。 我在这里找到了一个解决方法:

是如此简单和完美,我传输它

class ExampleWindow (QtGui.QMainWindow):
    def __init__ (self, parent=None):
        '''constructor'''
        QtGui.QMainWindow.__init__(self, parent)
        self.setGeometry(0, 0, 650, 550)
        self.setWindowTitle("My Example Application")
        self.centerOnScreen()

    def centerOnScreen (self):
        '''centerOnScreen()
Centers the window on the screen.'''
        resolution = QtGui.QDesktopWidget().screenGeometry()
        self.move((resolution.width() / 2) - (self.frameSize().width() / 2),
                  (resolution.height() / 2) - (self.frameSize().height() / 2)) 

祝你好运

这在Pyqt5中对我很有效:

from PyQt5.QtWidgets import *

qtRectangle = self.frameGeometry()
centerPoint = QDesktopWidget().availableGeometry().center()
qtRectangle.moveCenter(centerPoint)
self.move(qtRectangle.topLeft())

有没有办法指定这将出现在哪个监视器上?我正在设置两个监视器。
AttributeError:module'PyQt5.QtGui'没有属性'QDesktopWidget'
这是一个很好的答案。实用,优雅。这对我很有效!