PyQt中隱藏一個Menu Item,能夠經過QAction的setVisible(False)來設置,而QMenu的setVisible(False)是無論用的。app
如今問題來了,咱們有一個菜單,它有一些子菜單,如何隱藏它呢?ide
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對象。ui
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)
這時再經過這個QAction對象的setVisible(False)就能夠了。對象
測試代碼以下:utf-8
# -*- coding: utf-8 -*-
from PyQt4 import QtGui, QtCore
class MainWindow(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QMainWindow.__init__(self, parent)
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.saveAction = fileMenu.addAction('Save')
editMenu = self.menuBar().addMenu('Edit')
hideAction = editMenu.addAction('Hide')
self.connect(hideAction, QtCore.SIGNAL('triggered()'), self.hideMenu)
def hideMenu(self):
self.newAction.setVisible(False)
self.saveAction.setVisible(False)
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())it