2014-12-26 1 views
0

나는 MenuBar를 만들고 그것에 Menu 객체를 추가했다.wxPython에서 메뉴 제거하기 MenuBar

이제 메뉴 중 하나를 제거하고, 추가 된 Menu 개체에 대한 참조 만 있고, 메뉴의 위치 지정 및 레이블 지정에 대해 알지 못하거나 신경을 쓰지 않으려합니다.

이것은 사소한 일이지만 API는 처리하지 못하는 것처럼 보입니다. 모든 방법은 위치와 레이블을 기반으로합니다.

MenuBar.Remove() 메서드가 있지만 인수로 인수를 사용합니다. 메뉴를 취해 그 위치를 돌려주는 메소드는 없습니다.

Menus 및 MenuBars의 Detach() 메서드는 문서화되지 않았으므로 분명히 아무 것도 수행하지 않습니다.

나는 이것이 바보 같은 질문이며 해결책을 찾지 못했다는 것을 확신합니다. 아무도 찾지 못했지만 해결책을 찾지 못했습니다.

당신이 예를 확인할 수 있습니다

답변

0

:

# -*- coding: utf-8 -*- 
import wx 

class wxTest(wx.Frame): 
    def __init__(self,parent,title): 
     wx.Frame.__init__(self,parent,title=title,size=(150,100)) 
     self.button=wx.Button(self, -1, "Remove") 
     self.init_menu() # 

     self.Bind(wx.EVT_BUTTON, self.remove_menu, self.button) 
     self.sz = wx.BoxSizer(wx.VERTICAL) 
     self.sz.Add(self.button, 1, wx.EXPAND | wx.ALL, 10) 
     self.SetSizer(self.sz) 
     self.Show() 

    def init_menu(self): 
     self.mfile = wx.Menu() 
     self.medit = wx.Menu() 

     self.menubar = wx.MenuBar() 
     self.menubar.Append(self.mfile, "File") 
     self.menubar.Append(self.medit, "Edit") 
     self.SetMenuBar(self.menubar) 

    def remove_menu(self,event): 
     toRemove = self.mfile # Remove self.mfile 
     posm = self.menubar.FindMenu(toRemove.GetTitle()) 
     # posm is the menu "position" 
     if posm >= 0: 
      self.menubar.Remove(posm) 


if __name__=='__main__': 
    app=wx.App() 
    frame=wxTest(None,"Test Menu") 
    app.MainLoop()