第3章 - 创建一个空的QMainWindow

你现在可以考虑在用户界面中展示你的数据。QMainWindow 为图形用户界面应用程序提供了一个方便的结构,例如菜单栏和状态栏。下图展示了 QMainWindow 提供的开箱即用的布局:

QMainWindow layout

在这种情况下,让你的应用程序继承自 QMainWindow,并添加以下 UI 元素:

  • 一个“文件”菜单,用于打开文件对话框。

  • “退出”菜单关闭窗口。

  • 应用程序启动时状态栏上的状态消息。

此外,您可以为窗口定义固定大小或根据当前分辨率进行调整。在以下代码片段中,您将看到如何根据可用屏幕宽度(80%)和高度(70%)定义窗口大小。

注意

您可以使用其他Qt元素(如QMenuBar、QWidget和QStatusBar)实现类似的结构。请参考QMainWindow布局以获取指导。

 1
 2from PySide6.QtCore import Slot
 3from PySide6.QtGui import QAction, QKeySequence
 4from PySide6.QtWidgets import QMainWindow
 5
 6
 7class MainWindow(QMainWindow):
 8    def __init__(self):
 9        QMainWindow.__init__(self)
10        self.setWindowTitle("Eartquakes information")
11
12        # Menu
13        self.menu = self.menuBar()
14        self.file_menu = self.menu.addMenu("File")
15
16        # Exit QAction
17        exit_action = QAction("Exit", self)
18        exit_action.setShortcut(QKeySequence.Quit)
19        exit_action.triggered.connect(self.close)
20
21        self.file_menu.addAction(exit_action)
22
23        # Status Bar
24        self.status = self.statusBar()
25        self.status.showMessage("Data loaded and plotted")
26
27        # Window dimensions
28        geometry = self.screen().availableGeometry()
29        self.setFixedSize(geometry.width() * 0.8, geometry.height() * 0.7)

尝试运行脚本,看看你会得到什么输出。