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

posted @ 2020-05-17 16:12  Yong_无止境  阅读(556)  评论(0编辑  收藏  举报