控制PyQT5 / PySide2 窗体中菜单项的隐藏和显示

控制PyQT5 / PySide2 窗体中菜单项的隐藏和显示

在PyQT/PySide中,菜单项的隐藏函数(QMenu的setVisible(False))是不管用的。
如果我们要控制菜单项的隐藏和显示,可以按下面的方式处理

  1. PyQt4/PySide 版本

+ 无用的代码

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)  
  1. PyQt5/PySide2 版本

PyQt4/PySide的办法在PyQt5/PySide2中是没有效果的,
此时QMenu控件已经不在QtGui的包里,要用新办法处理

PyQt5/PySide2中控制菜单项显示/隐藏的办法

fileMenu = self.menuBar().addMenu('File')
act_fileMenu = fileMenu.menuAction()
act_fileMenu.setVisible(False)  

是不是变得很简单

may the odds be ever in your favor ~

你可能感兴趣的:(Python,qt,开发语言,python)