Как сделать виджет в центре экрана в PySide/PyQt?
Этот код работает, но мне интересно, есть ли более простой способ:
def center(self):
qr = self.frameGeometry()
cp = gui.QDesktopWidget().availableGeometry().center()
qr.moveCenter(cp)
self.move(qr.topLeft())
Ответы
Ответ 1
Нет, это самый простой способ. Вот фрагмент, который я использовал в С++:
QRect desktopRect = QApplication::desktop()->availableGeometry(this);
QPoint center = desktopRect.center();
move(center.x() - width() * 0.5, center.y() - height());
Ответ 2
просто добавьте эту строку в свои главные окна:
self.move(QtGui.QApplication.desktop().screen().rect().center()- self.rect().center())
Ответ 3
self.move(QDesktopWidget().availableGeometry().center() - self.frameGeometry().center())
Ответ 4
Еще один пример "func-style". Если вы используете его несколько раз.
screen_center = lambda widget: QApplication.desktop().screen().rect().center()- widget.rect().center()
И каждый раз в коде:
widget.move(screen_center(widget))