3

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

4

3 回答 3

7

我知道您已经解决了它,但是我为那些有同样问题的人做出了这个答案。我发布它主要是因为您要求 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)) 

祝你好运!

于 2016-05-10T13:00:57.860 回答
1

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

这里讨论了一个稍微更优雅的计算方法。

进行此计算时,重要的是在正确的时间完成,在 Qt 调整所有大小之后,就在它显示在屏幕上之前。一种可能有帮助的方法是创建一个一次性计时器并将屏幕定位在计时器的插槽中。

于 2011-04-19T03:30:52.660 回答
0

这在 Pyqt5 中对我有用:

from PyQt5.QtWidgets import *

qtRectangle = self.frameGeometry()
centerPoint = QDesktopWidget().availableGeometry().center()
qtRectangle.moveCenter(centerPoint)
self.move(qtRectangle.topLeft())
于 2020-11-13T04:57:36.823 回答