2012-12-04 34 views
5

Menü öğeleri oluşturduğum bir uygulama var ve belirli bir alt menünün görünürlüğünü ayarlamak istiyorum.QMenu'daki bir alt menüyü nasıl gizlerim

setVisibility(False) kullanmayı denedim, ancak bu çalışmadı. setVisibility(), menü öğeleri için çalışır, ancak QMenus'taki alt menüler için geçerli değildir.

aşağıda kod parçacığı göz at:

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_()) 

Yukarıdaki örnekte, ben "One" adlı menü öğesini gizleyebilir, ancak alt "alt menüsü 2"

adında

Herkes bana bir fikir verebilir ...

cevap

14

Sen neredeyse neredeyse vardı; Bunun yerine

:

self.submenu2.setVisible(False) 

Bunu istiyorsun: çok hızlı cevap için

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

Dostum thx ... O – Rao

+0

@PBLNarasimhaRao o – will

+2

söz etmeyin ... mükemmel çalıştı Bu da C++ QT'de harika çalışıyor: MySubMenu-> menuAction() -> setVisible (true); Top google hit yapamayacağını söylüyor, bu yüzden burada paylaşacağımı düşündüm. Alt menüleri silmeye ve bunları yeniden eklemenize gerek kalmaz, bu da osx üzerinde bir çökmeye neden olabilir. – Marcus10110

İlgili konular