在PyQT/PySide中,菜单项的隐藏函数(QMenu的setVisible(False))是不管用的。
如果我们要控制菜单项的隐藏和显示,可以按下面的方式处理
+ 无用的代码
fileMenu = self.menuBar().addMenu('File')
self.newMenu = fileMenu.addMenu('New')
self.newMenu.addAction('New Work')
self.newMenu.addAction('New Excel')
self.newMenu.setVisible(False)
不能达到目的,要解决这个问题,还得通过QAction的setVisible(False)来处理。
新建一个QMenu对象,然后通过QAction addMenu (self, QMenu)来得到QAction对象。
有效的代码
fileMenu = self.menuBar().addMenu('File')
self.newMenu = QtGui.QMenu(fileMenu)
self.newMenu.setTitle('New')
self.newMenu.addAction('New Word')
self.newMenu.addAction('New Excel')
self.newAction = fileMenu.addMenu(self.newMenu)
self.newAction.setVisible(False)
PyQt4/PySide的办法在PyQt5/PySide2中是没有效果的,
此时QMenu控件已经不在QtGui的包里,要用新办法处理
PyQt5/PySide2中控制菜单项显示/隐藏的办法
fileMenu = self.menuBar().addMenu('File')
act_fileMenu = fileMenu.menuAction()
act_fileMenu.setVisible(False)
是不是变得很简单