Как сделать виджет в центре экрана в PySide / PyQt? - PullRequest
16 голосов
/ 20 февраля 2012

Этот код работает, но мне интересно, есть ли более простой способ:

def center(self):
    qr = self.frameGeometry()
    cp = gui.QDesktopWidget().availableGeometry().center()
    qr.moveCenter(cp)
    self.move(qr.topLeft())

Ответы [ 4 ]

19 голосов
/ 25 мая 2012

просто добавьте эту строку в ваши главные окна:

self.move(QtGui.QApplication.desktop().screen().rect().center()- self.rect().center())
7 голосов
/ 10 ноября 2012
self.move(QDesktopWidget().availableGeometry().center() - self.frameGeometry().center())
5 голосов
/ 20 февраля 2012

Нет, это самый простой способ. Вот фрагмент кода, который я использовал в C ++:

  QRect desktopRect = QApplication::desktop()->availableGeometry(this);
  QPoint center = desktopRect.center();

  move(center.x() - width() * 0.5, center.y() - height());
1 голос
/ 13 июля 2017

Просто еще один пример "func-style". Если вы используете его несколько раз.

screen_center = lambda widget: QApplication.desktop().screen().rect().center()- widget.rect().center()

И каждый раз в коде:

widget.move(screen_center(widget))
...