为什么在屏幕上正确地赢得我的主窗口中心?

时间:2017-03-04 08:20:54

标签: python qt python-3.x pyqt pyqt5

我正试图将我的主窗口放在屏幕上,但两种常用方法都不起作用。他们都把它放得太低而且偏离中心宽度一点点。这是我尝试过的:

方式一:

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)

1 个答案:

答案 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)