2011-07-21 34 views
0

我正試圖學習Tkinter,雖然現在我被困在一個部分。我想在主菜單中添加級聯菜單。問題是我不知道我做錯了什麼。謝謝你的幫助。Python/Tkinter:爲什麼我的級聯菜單不工作?

from Tkinter import * 
import tkFileDialog 

class Application(Frame): 
    def __init__(self, master=None): 
     Frame.__init__(self, master) 
     self.master = master 
     self.create_wgts() 

    def create_wgts(self): 
     self.MainMenu=Menu(self.master) 

     self.wgt_confirm = Button(text='Confirm', command=self.traceback).pack(side=RIGHT) 

     self.wgt_entry = Entry() 
     self.wgt_entry.pack(side=RIGHT, fill=X, expand=1, ipadx=200) 
     self.wgt_entry.bind('<Key-Return>', self.hit_enter) 

     self.casMenu_File = Menu(self.MainMenu) 
     self.casMenu_File.add_command(label="Open File", command=self.file_select) 
     self.casMenu_File.add_command(label="Write to File", command=self.file_write) 
     self.casMenu_File.add_separator() 
     self.casMenu_File.add_command(label="Exit", command=self.traceback) 

     self.MainMenu.add_cascade(label='File', menu=self.casMenu_File) 

    def traceback(self): 
     print "traceback called" 


    def hit_enter(self, event): 
     print "Hit ENTER" 


    def file_select(self): 
     print "File>Open called" 


    def file_write(self): 
     print "File>Write File called" 


root = Tk() 
app = Application(master=root) 
app.mainloop() 

回答

1

你忘了補充:self.master.config(menu=self.MainMenu)

這是你的完整代碼:

from Tkinter import * 
import tkFileDialog 

class Application(Frame): 
    def __init__(self, master=None): 
     Frame.__init__(self, master) 
     self.master = master 
     self.create_wgts() 

    def create_wgts(self): 
     self.MainMenu=Menu(self.master) 

     self.wgt_confirm = Button(text='Confirm', command=self.traceback).pack(side=RIGHT) 

     self.wgt_entry = Entry() 
     self.wgt_entry.pack(side=RIGHT, fill=X, expand=1, ipadx=200) 
     self.wgt_entry.bind('<Key-Return>', self.hit_enter) 

     self.casMenu_File = Menu(self.MainMenu) 
     self.casMenu_File.add_command(label="Open File", command=self.file_select) 
     self.casMenu_File.add_command(label="Write to File", command=self.file_write) 
     self.casMenu_File.add_separator() 
     self.casMenu_File.add_command(label="Exit", command=self.traceback) 

     self.MainMenu.add_cascade(label='File', menu=self.casMenu_File) 
     self.master.config(menu=self.MainMenu) 

    def traceback(self): 
     print "traceback called" 


    def hit_enter(self, event): 
     print "Hit ENTER" 


    def file_select(self): 
     print "File>Open called" 


    def file_write(self): 
     print "File>Write File called" 


root = Tk() 
app = Application(master=root) 
app.mainloop() 
相關問題