Come creare un widget al centro dello schermo in Pyside/Pyqt?
Domanda
Questo codice funziona, ma mi chiedo se esiste un modo più semplice:
def center(self):
qr = self.frameGeometry()
cp = gui.QDesktopWidget().availableGeometry().center()
qr.moveCenter(cp)
self.move(qr.topLeft())
Soluzione
No, è il modo più semplice. Ecco uno snippet che ho usato in C ++:
QRect desktopRect = QApplication::desktop()->availableGeometry(this);
QPoint center = desktopRect.center();
move(center.x() - width() * 0.5, center.y() - height());
Altri suggerimenti
Basta aggiungere questa riga alle finestre principali:
self.move(QtGui.QApplication.desktop().screen().rect().center()- self.rect().center())
self.move(QDesktopWidget().availableGeometry().center() - self.frameGeometry().center())
Solo un altro esempio "in stile func". Se lo usi più volte.
screen_center = lambda widget: QApplication.desktop().screen().rect().center()- widget.rect().center()
E ogni volta nel codice:
widget.move(screen_center(widget))
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow