我想在屏幕中间显示我的项目主窗口。当我调用“self.show()”时,窗口显示在屏幕中间。
答案 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())