如何在 QMenu 中隐藏子菜单 [英] How do I hide a sub-menu in QMenu

查看:227
本文介绍了如何在 QMenu 中隐藏子菜单的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个生成菜单项的应用程序,我想设置特定子菜单的可见性.

I have an application where I generate menu items, and I want to set the visibility of a particular sub-menu.

我尝试使用 setVisibility(False),但这不起作用.setVisibility() 适用于菜单项,但不适用于 QMenus 中的子菜单.

I tried using setVisibility(False), but this did not work. setVisibility() works for menu items, but not for sub-menus in QMenus.

看看下面的代码片段:

import sys
from PyQt4 import QtGui

class Window(QtGui.QWidget):
    def __init__(self, parent=None):
        super(Window, self).__init__(parent)
        self.menu = QtGui.QMenu()
        self.actio1 = QtGui.QAction('One', self)
        self.actio2 = QtGui.QAction('Two', self)
        self.menu.addAction(self.actio1)
        self.menu.addAction(self.actio2)
        self.actio1.setVisible(False)
        self.submenu = QtGui.QMenu('submenu', self)
        self.submenu.addAction('sub one')
        self.submenu.addAction('sub two')
        self.menu.addMenu(self.submenu)        
        self.submenu2 = QtGui.QMenu('submenu 2', self)
        self.submenu2.addAction('sub 2 one')
        self.submenu2.addAction('sub 2 two')
        self.menu.addMenu(self.submenu2)        
        self.submenu2.setVisible(False)
        layout = QtGui.QHBoxLayout()
        layout.addWidget(self.menu)
        self.setLayout(layout)

if __name__ == '__main__':

    app = QtGui.QApplication(sys.argv)
    w = Window()
    w.show()
    sys.exit(app.exec_())

在上面的例子中,我可以隐藏名为One"的菜单项,但不能隐藏名为submenu 2"的子菜单

In the above example, I can hide the menu item named "One", but not the sub-menu named "submenu 2"

谁能给我一个想法...

Can anyone give me an idea...

推荐答案

你差点就拥有了;

取而代之的是:

self.submenu2.setVisible(False)

你想要这个:

self.submenu2.menuAction().setVisible(False)

这篇关于如何在 QMenu 中隐藏子菜单的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆