【问题标题】:Show QMainwindow in the middle of the screen在屏幕中间显示 QMainwindow
【发布时间】:2011-04-19 02:05:49
【问题描述】:

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

【问题讨论】:

    标签: pyqt4 qmainwindow


    【解决方案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】:

    首先,我建议不要尝试将窗口位置强加给用户,让系统的窗口管理器决定它应该去哪里。如果你真的坚持自己定位(也许你正在为信息亭编程),你可以在 stackoverflow 的上一个问题中找到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())
      

      【讨论】:

        猜你喜欢
        • 2012-01-07
        • 2019-05-07
        • 1970-01-01
        • 1970-01-01
        • 2014-08-30
        • 1970-01-01
        • 1970-01-01
        • 2011-04-09
        • 2021-05-21
        相关资源
        最近更新 更多