在屏幕中间显示 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的主要内容,如果未能解决你的问题,请参考以下文章

如何制作显示在屏幕中间的半圆形菜单?

如何让窗口显示在电脑屏幕中间

汇编:实验9:在屏幕中间显示彩色字符串

JQuery 弹出层,始终显示在屏幕正中间

iOS高德地图让指定区域或者点显示在屏幕中间

Div居中在屏幕正中间