2010-08-19 119 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