2010-08-19 44 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) 
    ... 

而且我寧願是這樣的:

class MenuBar: 

    # all the content of the menu here 

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

RGDS,

回答

6

是的,這是可能的:

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 2010-08-19 11:18:01

+0

@布魯諾:我編輯了我的答案給你一個工作的例子。 – 2010-08-19 11:24:17

+0

感謝您的回答,我已經嘗試過了,它效果很好,但出於神祕原因,我的腳本無法正常工作。只要我找到答案,我會告訴你! – Bruno 2010-08-19 11:40:30