这段代码可以运行,但我想知道是否有更简单的方法:
def center(self):
qr = self.frameGeometry()
cp = gui.QDesktopWidget().availableGeometry().center()
qr.moveCenter(cp)
self.move(qr.topLeft())
只需在您的主窗口中添加此行:
self.move(QtGui.QApplication.desktop().screen().rect().center()- self.rect().center())
self.move(QDesktopWidget().availableGeometry().center() - self.frameGeometry().center())
QRect desktopRect = QApplication::desktop()->availableGeometry(this);
QPoint center = desktopRect.center();
move(center.x() - width() * 0.5, center.y() - height());
这是一个“函数式”例子,如果您使用它多次。
screen_center = lambda widget: QApplication.desktop().screen().rect().center()- widget.rect().center()
每次在代码中:
widget.move(screen_center(widget))
QDesktopWidget已被弃用,请使用QScreen代替。
def centerWidgetOnScreen(self, widget):
centerPoint = QtGui.QScreen.availableGeometry(QtWidgets.QApplication.primaryScreen()).center()
fg = widget.frameGeometry()
fg.moveCenter(centerPoint)
widget.move(fg.topLeft())
对我来说它有效:
from PySide2.QtGui import QGuiApplication
# ...
def center(self):
centerPoint = QGuiApplication.screens()[0].geometry().center()
self.move(centerPoint - self.frameGeometry().center())