import sys
from PyQt5.QtWidgets import QGridLayout, QLabel, QDesktopWidget, QMainWindow, QMdiArea, QApplication
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.widget = QMdiArea() # 设置一个多文档区域为中心控件
self.setCentralWidget(self.widget) # 设置窗口中心的控件, QMainWindow不能设置布局(使用setLayout()方法),因为它有自己的布局
self.grid_layout = QGridLayout() # 格子布局
self.label = QLabel()
self.label.setText("PyQt5官方文档")
self.label.setOpenExternalLinks(True) # 设置打开外部链接
self.grid_layout.addWidget(self.label, 0, 0)
# 省略此处添加N多控件的代码
# 设置窗体元素的排列方式
self.widget.setLayout(self.grid_layout)
self.window_center_show()
def window_center_show(self):
screen = QDesktopWidget().screenGeometry()
size = self.geometry()
self.move(int((screen.width() - size.width()) / 2), int((screen.height() - size.height()) / 2))
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
sys.exit(app.exec_())
修改后的代码
# 其余不变只需要将self.show()放在获取尺寸的前面就可以了
def window_center_show(self):
self.show()
screen = QDesktopWidget().screenGeometry()
size = self.geometry()
self.move(int((screen.width() - size.width()) / 2), int((screen.height() - size.height()) / 2))
self.show()更换成self.adjustSize()就完美解决了
关于该问题,我找了一篇非常好的博客,你可以看看是否有帮助,链接:pyqt5窗口 样式 背景