美文网首页
PyQt5 check menu

PyQt5 check menu

作者: _Mirage | 来源:发表于2020-04-01 23:00 被阅读0次

check menu 就是让menu菜单的子选项的一个QAction变得可以选择,并且在选择前和选择后能处理不同的事件。

有两种方法创造可以选择的QAction:
第一种是在QAction的构造函数里添加checkable=True参数
第二种就是用实例化后的QAction对象调用它的setCheckable(True)方法。

注意只有子QAction才可以添加是否可以选中的功能,子菜单是不行的。

代码:

# coding='utf-8'


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


class Gui(QMainWindow):
    def __init__(self):
        super().__init__()
        self.start()

    def start(self):
        # 创建成类属性的status_bar只是为了方便在类方法之间通信
        self.status_bar = self.statusBar()
        # 最初进入的时候状态栏显示的内容
        self.status_bar.showMessage('准备好啦!')

        # 创建主菜单,现在没添加任何菜单,暂时没有用
        menu_bar = self.menuBar()
        # 在主菜单的基础上添加一个菜单,这将返回一个菜单对象
        # 同时这个菜单对象才是最终展现出来的菜单
        view_menu = menu_bar.addMenu('View')

        # 创建QAciton事件,这些创建的事件通常都是和菜单,toolbar等来绑定
        view_action = QAction('显示状态栏', self)
        # 当触发这个QAction事件后将左下角状态栏设置成这样的
        view_action.setStatusTip('我是状态栏')
        # 利用两种之一的方法将菜单下的这个QAciton事件变得可以选择
        view_action.setCheckable(True)
        # 是初始时候是选择上的
        view_action.setChecked(True)
        # 当点击这个QAction事件后触发self.f回调函数,\
        # 此时会将是否选中作为参数传递给self.f
        view_action.triggered.connect(self.f)

        # 给在主菜单基础上建立的菜单绑定这个QAciton事件\
        # (注意主菜单是没有任何用的,必须要用在主菜单基础上建立的子菜单)
        view_menu.addAction(view_action)

        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('Check menu')
        self.show()

    # 这个是一个回调函数,参数state表示QAction事件是否被选中
    def f(self, state):
        if state:
            self.status_bar.show()
        else:
            self.status_bar.hide()


win = QApplication(sys.argv)
gui = Gui()
sys.exit(win.exec_())

相关文章

网友评论

      本文标题:PyQt5 check menu

      本文链接:https://www.haomeiwen.com/subject/zfvzuhtx.html