PyQt5主界面
QMainWindow
QMainWindow控件继承之QWidget控件,QWidget是所有控件的父类,主要提供界面的基本功能,包括边框、标题、工具栏、关闭按钮、最小化按钮以及最大化按钮等。子类中再进行差异化的设置,完成具体控件的效果。
QMainWindow控件里面包含:菜单栏、工具栏、状态栏以及中心子窗口。相关接口如下:
方法 | 描述 |
menuBar() | 获取主窗口菜单栏 |
addMenu() | 添加子菜单栏到父菜单栏 |
addAction() | 添加菜单栏/工具栏中的具体选项 |
addToolBar() | 添加工具栏,返回值是新增的工具栏对象 |
setCenterWidget() | 添加中心子窗口 |
setStatusBar() | 设置状态栏 |
statusBar() | 获取状态栏对象 |
import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, QMenu, QStatusBar, QWidget, QLabel class MyWidget(QMainWindow): def __init__(self): super(MyWidget, self).__init__() self.initMenuBar() self.initToolBar() self.initCenter() self.initStatusBar() def initMenuBar(self): self.open = QAction('Open(&O)', self) self.close = QAction('Close(&C)', self) self.ascii = QAction('Ascii(&A)', self) self.utf = QAction('UTF(&U)', self) self.utf8 = QAction('UTF8(&V)', self) self.menu = self.menuBar() self.file = self.menu.addMenu('File(&F)') self.file.addAction(self.open) self.file.addAction(self.close) self.langurage = QMenu('Langurage(&L)', self) self.langurage.addAction(self.ascii) self.langurage.addAction(self.utf) self.langurage.addAction(self.utf8) self.menu.addMenu(self.langurage) def initToolBar(self): self.fileToolBar = self.addToolBar('File') self.fileToolBar.addAction(self.open) self.fileToolBar.addAction(self.close) self.langurageToolBar = self.addToolBar('Langurage') self.langurageToolBar.addAction(self.ascii) self.langurageToolBar.addAction(self.utf) self.langurageToolBar.addAction(self.utf8) def initStatusBar(self): self.statusBar = QStatusBar() self.setStatusBar(self.statusBar) self.statusBar.showMessage('V1.0.0') def initCenter(self): self.widget = QWidget(self) self.setCentralWidget(self.widget) label = QLabel(self.widget) label.setText('center widget') if __name__ == '__main__': app = QApplication(sys.argv) w = MyWidget() w.resize(500, 300) w.move(300, 300) w.setWindowTitle('Simple') w.show() sys.exit(app.exec_())
小技巧
-
QAction中使用&可以设置快捷键,格式:WidgetName(&X)
-
对于菜单栏中,要想选中/触发QAction,必须先触发QAction所在的QMenu,不能直接触发QAction