我正试图将我的主窗口放在屏幕上,但两种常用方法都不起作用。他们都把它放得太低而且偏离中心宽度一点点。这是我尝试过的:
screen = QDesktopWidget().screenGeometry()
x = int((screen.width() - self.width()) / 2)
y = int((screen.height() - self.height()) / 2)
self.move(x, y)
self.setGeometry(QStyle.alignedRect(Qt.LeftToRight, Qt.AlignCenter, self.size(),
QDesktopWidget().availableGeometry()))
请注意,在此之前我设置宽度和高度,如下所示:
screen = QDesktopWidget().screenGeometry()
ww = int(screen.width() / 1.5)
wh = int(screen.height() / 2)
self.resize(ww, wh)
答案 0 :(得分:2)
您正在将窗口小部件的topLeft移动到屏幕中心,这就是它不居中的原因。您应该考虑窗口小部件的大小。
x = QApplication().desktop().screenGeometry().center().x()
y = QApplication().desktop().screenGeometry().center().y()
self.move(x - self.geometry().width()/2, y - self.geometry().height()/2)
修改:
如果self是mainWindow,这是有效的。如果它是具有父级的窗口小部件,则移动将移动(x,y)将相对于其父窗口移动窗口小部件。你应该使用:
将下面的坐标(全局坐标)转换为父坐标QPoint QWidget.mapFromGlobal (self, QPoint)