在屏幕中间显示QMainwindow

时间:2011-04-19 02:05:49

标签: pyqt4 qmainwindow

我想在屏幕中间显示我的项目主窗口。当我调用“self.show()”时,窗口显示在屏幕中间。

3 个答案:

答案 0 :(得分:5)

我知道你已经解决了这个问题,但我为那些有同样问题的人做了这个答案。我发布它主要是因为你要求pyQt而另一个答案是Qt(C ++)。 我在这里找到了一个解决方法:https://bashelton.com/2009/06/pyqt-center-on-screen/

如此简单且完美无缺,我传送它..

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)) 
祝你好运!

答案 1 :(得分:1)

首先,我建议不要试图强制用户的窗口位置,让系统的窗口管理器决定它应该去哪里。如果你真的坚持自己定位(也许你是为自助服务终端编程),你可以在上一个关于stackoverflow的问题中找到some information here

执行此操作的稍微优雅的计算是discussed here.

进行此计算时,重要的是在Qt调整所有内容之后并在屏幕上显示之前,在正确的时间完成。一种可能有用的方法是create a one-shot timer并在计时器的插槽中进行屏幕定位。

答案 2 :(得分:0)

这在Pyqt5中对我有用:

from PyQt5.QtWidgets import *

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