PyQt5学习笔记12 - QMenubar & QStatusBar

前文

PyQt5学习笔记7 - QLineEdit
PyQt5学习笔记8 - QTextEdit
PyQt5学习笔记9 - QPushButton & QRadioButton
PyQt5学习笔记10 - QCheckBox & QComboBox
PyQt5学习笔记11 - QSpinBox & QSlider


菜单栏 QMenuBar

在QMainWindow对象的标题栏下方,水平的QMenuBar被保留显示QMenu对象。

QMenu类提供了一个可以添加到菜单栏的小控件,也用于创建上下文菜单和弹出菜单。每个QMenu对象都包含一个或者多个QAction对象或级联的QMenu对象。

单击任何QAction按钮时,QMenu对象否会发射triggered信号。



QMenubar 常用方法如下

方法 描述
menuBar() 返回主窗口的QMenuBar对象
addMenu() 在菜单栏中添加一个新的QMenu对象
addAction() 向QMenu小控件中添加一个操作按钮,其中包含文本或图标
setEnabled() 将操作按钮状态设置为启用/禁用
addSepertor() 在菜单中添加一条分割线
clear() 删除菜单/菜单栏的内容
setShortcut() 将快捷键关联到操作按钮
setText() 设置菜单项的文本
setTitle() 设置QMenu小控件的标题
text() 返回与QAction对象关联的文本
title() 返回QMenu小控件的标题



实例:QMenuBar的使用

import sys

from PyQt5.QtWidgets import QMainWindow, QHBoxLayout, QAction, QApplication


class QMenuBarDemo(QMainWindow):
    def __init__(self, parent=None):
        super(QMenuBarDemo, self).__init__(parent)
        layout = QHBoxLayout()

        menu_bar = self.menuBar()

        file = menu_bar.addMenu('File')
        file.addAction('New')

        save = QAction('Save', self)
        save.setShortcut('Ctrl+S')
        file.addAction(save)

        edit = file.addMenu('Edit')
        edit.addAction('copy')
        edit.addAction('paste')

        quit_action = QAction('Quit', self)

        file.addAction(quit_action)
        file.triggered[QAction].connect(self.triggered_event)

        self.setLayout(layout)
        self.setWindowTitle('QMenuBarDemo')

    @staticmethod
    def triggered_event(q):
        print(q.text() + 'is triggered')


if __name__ == '__main__':
    app = QApplication(sys.argv)
    demo = QMenuBarDemo()
    demo.show()
    sys.exit(app.exec())

添加菜单栏使用addMenu,添加子菜单使用addAction, 设置快捷键:

save.addShortcut("Ctrl+S")

工具栏 QToolBar

QToolBar控件是由文本按钮,图标或其他小控件按钮组成的可移动面板,通常位于菜单栏下方



QToolBar类常用方法

方法 描述
addAction() 添加工具按钮
addSeperator() 分组显示工具按钮
addWidget() 添加工具栏中按钮以外的控件
addToolBar() 使用QMainWindow类添加一个新的工具栏
setMovable() 设置工具栏是否可移动
setOrientation() 设置工具栏是否可以设置横竖方向



实例:QToolBar的使用

import sys

from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QMainWindow, QVBoxLayout, QApplication, QAction


class QToolBarDemo(QMainWindow):
    def __init__(self, parent=None):
        super(QToolBarDemo, self).__init__(parent)
        self.setWindowTitle('ToolBarDemo')
        self.setWindowIcon(QIcon('../image/python.png'))
        self.resize(400, 240)

        menu_bar = self.menuBar()

        file = menu_bar.addMenu('File')
        file.addAction('New')
        file.addAction('Open')
        file.addAction('Save')

        file.triggered[QAction].connect(self.press_event)

        tool_bar = self.addToolBar('File')

        new = QAction(QIcon('../image/new.png'), 'New', self)

        open_file = QAction(QIcon('../image/open.png'), 'Open', self)

        save = QAction(QIcon('../image/save.png'), 'Save', self)

        tool_bar.addAction(new)
        tool_bar.addAction(open_file)
        tool_bar.addAction(save)

        tool_bar.actionTriggered[QAction].connect(self.press_event)

    @staticmethod
    def press_event(a: QAction):
        print(f'Press tool button is {a.text()}')


if __name__ == '__main__':
    app = QApplication(sys.argv)
    demo = QToolBarDemo()
    demo.show()
    sys.exit(app.exec())

状态栏 StatusBar

MainWindow 对象在底部保留有一个水平条作为状态栏(QStatusBar), 用于显示状态信息。



QStatusBar 常用方法

方法 描述
addWidget() 在状态栏中添加给定的控件对象
addPermanentWidget() 在状态栏中就用添加给定的控件对象
showMessage() 在状态栏中显示一条临时的信息,指定时间间隔
clearMessage() 删除正在显示的临时信息
removeWidget() 在状态栏中移除指定的控件



实例:QSatusBar 的使用

import sys

from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QMainWindow, QAction, QTextEdit, QStatusBar, QApplication


class QStatusBarDemo(QMainWindow):
    def __init__(self, parent=None):
        super(QStatusBarDemo, self).__init__(parent)
        menu_bar = self.menuBar()

        file = menu_bar.addMenu('File')
        file.addAction('show')
        file.triggered[QAction].connect(self.action_event)

        self.text_edit = QTextEdit()

        self.setCentralWidget(self.text_edit)
        self.status_bar = QStatusBar()

        self.setWindowTitle('QStatusBarDemo')
        self.setWindowIcon(QIcon('../image/python.png'))
        self.setStatusBar(self.status_bar)

    def action_event(self, q: QAction):
        if q.text() == 'show':
            self.status_bar.showMessage(f'click menu:{q.text()} || message: {self.text_edit.toPlainText()}', 5000)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    demo = QStatusBarDemo()
    demo.show()
    sys.exit(app.exec())




如有侵权,请联系删除

你可能感兴趣的:(PyQt5学习笔记12 - QMenubar & QStatusBar)