2010-08-19 6 views
2

저는 Gui에서 일하고 있습니다. 스크립트의 메뉴 속성을 더 명확하고 개선 된 경향이있는 코드로 만들 수 있는지 알고 싶습니다.Tkinter Gui의 클래스 메뉴

class Application(Frame): 
    """ main window application """ 
    def __init__(self, boss = None): 
    (...) 
    self.menu = Menu(self) 
    self.master.config(menu = self.menu) 

    self.select = Menu(self.menu) 
    self.menu.add_cascade(label = 'Select', menu = self.select) 
    self.select.add_command(label = 'Select all', command = self.select_all) 
    ... 

그리고 내가 좋아하는 것을 선호하는 것 :

내 코드는 현재

답변

6

네, 가능

class MenuBar: 

    # all the content of the menu here 

class Application(Frame): 
    (...) 
    self.menu = MenuBar(self) ? 

RGDS을 :

import Tkinter 
import sys 

class MenuBar(Tkinter.Menu): 
    def __init__(self, parent): 
     Tkinter.Menu.__init__(self, parent) 

     fileMenu = Tkinter.Menu(self, tearoff=False) 
     self.add_cascade(label="File",underline=0, menu=fileMenu) 
     fileMenu.add_command(label="Exit", underline=1, command=self.quit) 

    def quit(self): 
     sys.exit(0) 

class App(Tkinter.Tk): 
    def __init__(self): 
     Tkinter.Tk.__init__(self) 
     menubar = MenuBar(self) 
     self.config(menu=menubar) 

if __name__ == "__main__": 
    app=App() 
    app.mainloop() 
+0

, 안녕하세요 없음 작동하지 않습니다. 오류 메시지 "Attribut eError : MenuBar 인스턴스에 'master'속성이 없습니다. – Bruno

+0

@ 브루노 : 나는 실례를 들어주기 위해 나의 대답을 편집했다. –

+0

답변을 주셔서 감사합니다, 나는 그것을 시도하고 위대한 작품이지만 신비한 이유로 내 스크립트가 작동하지 않습니다. 답변을 찾자 마자 나는 당신에게 말할 것입니다! – Bruno