此代码有效,但我想知道是否有更简单的方法:
def center(self):
qr = self.frameGeometry()
cp = gui.QDesktopWidget().availableGeometry().center()
qr.moveCenter(cp)
self.move(qr.topLeft())
答案 0 :(得分:19)
只需将此行添加到主窗口:
self.move(QtGui.QApplication.desktop().screen().rect().center()- self.rect().center())
答案 1 :(得分:7)
self.move(QDesktopWidget().availableGeometry().center() - self.frameGeometry().center())
答案 2 :(得分:5)
不,这是最简单的方法。这是我在C ++中使用的片段:
QRect desktopRect = QApplication::desktop()->availableGeometry(this);
QPoint center = desktopRect.center();
move(center.x() - width() * 0.5, center.y() - height());
答案 3 :(得分:1)
另一个" func-style"例。如果你多次使用它。
{
"jsonapi": {
"version": "1.0"
},
"links": {
},
"data": [
{
"type": "versions",
"id": "urn:adsk.wipprod:fs.file:vf.00UeaES1TmW67ZUDMfSn1A?version=3",
"attributes": {
"name": "56750_A.rvt",
"displayName": "56750_A.rvt",
}
}
}
],
"included": [
{
"type": "items",
"id": "urn:adsk.wipprod:dm.lineage:00UeaES1TmW67ZUDMfSn1A",
"attributes": {
"displayName": "343435_A.rvt",
}
}
]
}
每次都在代码中:
screen_center = lambda widget: QApplication.desktop().screen().rect().center()- widget.rect().center()
答案 4 :(得分:1)
已弃用QDesktopWidget。请改用QScreen。
def centerWidgetOnScreen(self, widget):
centerPoint = QtGui.QScreen.availableGeometry(QtWidgets.QApplication.primaryScreen()).center()
fg = widget.frameGeometry()
fg.moveCenter(centerPoint)
widget.move(fg.topLeft())
答案 5 :(得分:0)
它对我有用:
from PySide2.QtGui import QGuiApplication
# ...
def center(self):
centerPoint = QGuiApplication.screens()[0].geometry().center()
self.move(centerPoint - self.frameGeometry().center())