PyQt中如何隱藏Menu

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

相關文章
相關標籤/搜索