美文网首页
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