QtGui.QDesktopWidget 类提供了有关用户桌面的信息,包括屏幕尺寸。
self.center()
将居中窗口的代码放置在自定义 center() 方法中。
qr = self.frameGeometry()
frameGeometry() 方法允许我们创建一个无形矩形并根据主窗口的宽高设置自身的宽度与高度。简单理解就是将这个控件(QWidget)的几何内容(宽高位置等),赋值给qr
cp = QDesktopWidget().availableGeometry().center()
计算出你的显示器的屏幕分辨率。根据得到的分辨率我们得到屏幕的中心点。
qr.moveCenter(cp)
我们的矩形(qr)已有宽度和高度,现在设置移动矩形的中心(moveCenter)到屏幕的中心点(cp),矩形的尺寸是不变的。
self.move(qr.topLeft())
移动应用程序窗口的左上角到qr矩形的左上角,从而使应用程序窗口显示在屏幕的中心。
代码如下:
# !/usr/bin/python3
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QDesktopWidget
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 300, 220)
self.center()
self.setWindowTitle('窗口居中')
self.show()
def center(self):
qr = self.frameGeometry()
cp = QDesktopWidget().availableGeometry().center()
qr.moveCenter(cp)
self.move(qr.topLeft())
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
效果图: