Показать QMainwindow в середине экрана - PullRequest
1 голос
/ 19 апреля 2011

Я хочу показать главное окно моего проекта в середине экрана. когда я вызываю «self.show ()», то окно показывается в середине экрана.

Ответы [ 2 ]

5 голосов
/ 10 мая 2016

Я знаю, что вы уже решили это, но я делаю этот ответ для тех, у кого тот же вопрос.Я публикую это в основном потому, что вы запросили 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 голос
/ 19 апреля 2011

Во-первых, я бы рекомендовал не пытаться навязывать позицию окна вашим пользователям и позволить системному оконному менеджеру решать, куда он должен идти. Если вы действительно настаиваете на том, чтобы расположить его самостоятельно (возможно, вы программируете для киоска), вы можете найти некоторую информацию здесь в предыдущем вопросе о stackoverflow.

Несколько более элегантный расчет для этого обсуждается здесь.

При выполнении этого вычисления важно, чтобы оно было выполнено в правильное время, после того, как Qt изменил размер всего и непосредственно перед тем, как оно отобразится на экране. Один способ, который может помочь, - создать таймер однократного действия и выполнить позиционирование экрана в слоте для таймера.

...