2010-10-14 12 views
4

Je fais un menu en utilisant Tkinter, mais je voulais mettre "add_checkbutton" au lieu de "add_command" dans les options de menu, mais le problème est: comment je désélectionner/sélectionner une case à cocher?Faire des options de menu avec Checkbutton dans Tkinter?

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

Voulez-vous dire manuellement (avec une souris) ou par programmation? –

+0

par programme. – itsaboutcode

Répondre

8

Vous devez associer une variable à l'élément checkbutton (s), puis réglez la variable pour provoquer l'élément à cocher ou décocher. Par exemple:

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

Bonjour, merci pour votre réponse. J'obtiens peu de problème en exécutant ceci parce que j'obtiens l'erreur au sujet de tk.BooleanVar() – itsaboutcode

+0

@itsaboutcode: probablement parce que vous importez Tkinter d'une manière différente. Il semble que vous importiez tout depuis Tkinter, vous pouvez donc changer le code en "BooleanVar()". –

+0

Merci l'homme, cela a fonctionné. – itsaboutcode