在屏幕中间显示 QMainwindow
Posted
技术标签:
【中文标题】在屏幕中间显示 QMainwindow【英文标题】:Show QMainwindow in the middle of the screen 【发布时间】:2011-04-19 02:05:49 【问题描述】:我想在屏幕中间显示我的项目主窗口。当我调用“self.show()”时,窗口显示在屏幕中间。
【问题讨论】:
【参考方案1】:我知道你已经解决了,但我为那些有同样问题的人做这个答案。我发布它主要是因为您要求 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))
祝你好运!
【讨论】:
有没有办法指定这将出现在哪个显示器上?我正在使用 2 台显示器。AttributeError: module 'PyQt5.QtGui' has no attribute 'QDesktopWidget'
这是一个很好的答案。有用,优雅。它对我很有用!【参考方案2】:
首先,我建议不要尝试将窗口位置强加给用户,让系统的窗口管理器决定它应该去哪里。如果你真的坚持自己定位(也许你正在为信息亭编程),你可以在 *** 的上一个问题中找到some information here。
一个更优雅的计算是discussed here.
进行此计算时,重要的是要在正确的时间完成,在 Qt 调整所有大小之后,就在它显示在屏幕上之前。一种可能有帮助的方法是create a one-shot timer 并将屏幕定位在计时器的插槽中。
【讨论】:
【参考方案3】:这在 Pyqt5 中对我有用:
from PyQt5.QtWidgets import *
qtRectangle = self.frameGeometry()
centerPoint = QDesktopWidget().availableGeometry().center()
qtRectangle.moveCenter(centerPoint)
self.move(qtRectangle.topLeft())
【讨论】:
以上是关于在屏幕中间显示 QMainwindow的主要内容,如果未能解决你的问题,请参考以下文章