import Tkinter as Tk import types class GuiMaker(Tk.Frame): def __init__(self,master=None): Tk.Frame.__init__(self,master) self.pack(expan=YES,fill=BOTH) self.start() self.makeMenuBar() self.makeWIdgets() self.makeToolBar() #???????????????? menuBar = [] toolBar = [] helpButton = 1 def makeMenuBar(self): manubar = Tk.Frame(self, relief=RAISED, bd=2) manubar.pack(side=TOP, expand=YES, fill=X) for entry in self.menuBar: mbutton = Tk.Menubutton(menubar, text=entry[0], underline=entry[1]) mbutton.pack(side=LEFT) menu = self.addMenuItems(mbutton, entery[2]) mbutton['menu'] = menu if self.helpButton: Tk.Button(menubar,text='Help',cursor='gumby',relief='FLAT',command=self.help).pack(side=RIGHT) def addMenuItems(self,parent,items): menu = Tk.Menu(parent) for item in items: if item == 'separator': menu.add_separator({}) elif type(item) == ListType: menu.add_command(label=item[0],underline=item[1],command=item[2]) else: submenu = self.addMenuItems(menu, item[2]) menu.add_cascade(label=item[0],underline=tem[1],menu=submenu) return menu #??????????????? def makeToolBar(self): toolbar = Tk.Frame(self,cursor='hand2',relief=SUNKEN,bd=2) toolbar.pack(side=BOTTOM, expand=YES, fill=Tk.X) for item in self.toolBar: Tk.Button(toolbar, text=item[0],command=item[1]).pack(item[2]) #??????????????????? def makeWidgets(self): name = Tk.Label(self,text=self.__class__.__name__,cursor='crosshair') name.pack(padx=50,pady=50,expand=YES, fill=BOTH) #????? if __name__ == '__main__': import guimixin class TextApp(GuiMixin, GuiMaker): #helpButton = 0 def start(self): self.menuBar = [ ('File',0,['Quit', self.quit]) ] self.toolBar = [ ('Quit',self.quit,{'seide':LEFT}) ] TestApp().mainloop()