2010-10-14 50 views
4

我使用Tkinter製作菜單,但我想將"add_checkbutton"而不是"add_command"放入菜單選項,但問題是:我如何取消選擇/選擇複選框?使用Tkinter中的Checkbutton製作菜單選項?

menu = Menu(parent) 

parent.config(menu=menu) 

viewMenu = Menu(menu) 

menu.add_cascade(label="View", menu=viewMenu) 
viewMenu.add_command(label = "Show All", command=self.showAllEntries) 
viewMenu.add_command(label="Show Done", command= self.showDoneEntries) 
viewMenu.add_command(label="Show Not Done", command = self.showNotDoneEntries) 
+0

您的意思是手動(使用鼠標)還是以編程方式?通過編程方式編程爲 – 2010-10-14 02:38:21

+0

。 – itsaboutcode 2010-10-14 03:09:26

回答

8

您需要將變量與checkbutton項目關聯,然後設置變量以使項目被選中或取消選中。例如:

import tkinter as tk 

parent = tk.Tk() 

menubar = tk.Menu(parent) 
show_all = tk.BooleanVar() 
show_all.set(True) 
show_done = tk.BooleanVar() 
show_not_done = tk.BooleanVar() 

view_menu = tk.Menu(menubar) 
view_menu.add_checkbutton(label="Show All", onvalue=1, offvalue=False, variable=show_all) 
view_menu.add_checkbutton(label="Show Done", onvalue=True, offvalue=0, variable=show_done) 
view_menu.add_checkbutton(label="Show Not Done", onvalue=1, offvalue=0, variable=show_not_done) 
menubar.add_cascade(label='View', menu=view_menu) 
parent.config(menu=menubar) 

parent.mainloop() 
+0

嗨,謝謝你的回覆。我在執行這個時遇到小問題,因爲我得到關於tk.BooleanVar() – itsaboutcode 2010-10-15 16:56:20

+0

@itsaboutcode的錯誤:可能是因爲您以不同的方式導入了Tkinter。看起來你從Tkinter導入了所有的東西,所以你可以將代碼改爲「BooleanVar()」。 – 2010-10-15 17:26:51

+0

謝謝你,它工作。 – itsaboutcode 2010-10-15 18:30:40