2017-08-28 8 views
1

Je souhaite avoir un ensemble de deux radiobuttons "BBC" et "CNN" dans un sous-menu nommé "Canal" dans mon interface graphique. J'ai essayé d'utiliser la méthode add_radiobutton, mais les boutons radio apparaissent sous le sous-menu, alors que je veux qu'ils se comportent comme des attributs pour le sous-menu "Canal", plutôt que des sous-menus supplémentaires du menu "Actualités".Comment ajouter des radiobuttons à un sous-menu dans Tkinter

from tkinter import * 


root = Tk() 
root.title("main") 
root.geometry("500x500") 


MAIN_MENU = Menu(root) 
root.config(menu=MAIN_MENU) 

File_menu = Menu(MAIN_MENU, tearoff=0) 
MAIN_MENU.add_cascade(label="News", menu=File_menu, underline=0) 
File_menu.add_command(label="Channel") 

File_menu.add_radiobutton(label="BBC") 
File_menu.add_radiobutton(label="CNN") 

Settings_menu = Menu(MAIN_MENU, tearoff=0) 
MAIN_MENU.add_cascade(label="History", menu=Settings_menu, underline=3) 

root.mainloop() 
+0

voulez-vous que le menu apparaisse à droite de 'Channel' avec les options BBC, CNN comme un menu latéral? –

+0

Exactement à droite. –

+0

Vous les ajoutez explicitement au menu Fichier. Pourquoi attendez-vous qu'ils se manifestent ailleurs? Avez-vous essayé de les ajouter au menu que vous voulez qu'ils soient? –

Répondre

1

Vous devez faire un sous-menu premier, ajouter les radiobuttons à lui, et puis l'ajouter en cascade à votre menu principal. Ensuite, ajoutez ce menu à votre barre de menu.

menuBar = tk.Menu(root) 
menu1 = tk.Menu(root) 
submenu = tk.Menu(root) 
submenu.add_radiobutton(label="Option 1") 
submenu.add_radiobutton(label="Option 2") 

menuBar.add_cascade(label="Menu 1", menu=menu1) 
menu1.add_cascade(label="Subemnu with radio buttons", menu=submenu) 

exemple de travail complet:

import tkinter as tk 

root = tk.Tk() 

menuBar = tk.Menu(root) 
menu1 = tk.Menu(root) 
submenu = tk.Menu(root) 
submenu.add_radiobutton(label="Option 1") 
submenu.add_radiobutton(label="Option 2") 

menuBar.add_cascade(label="Menu 1", menu=menu1) 
menu1.add_cascade(label="Subemnu with radio buttons", menu=submenu) 

root.config(menu=menuBar) 
root.mainloop() 

Vous aurez probablement envie d'ajouter quelques attributs à votre radiobuttons. Une forme plus complète serait:

add_radiobutton(label="Option 1", value=1, variable=optionVar, command=on_option_1) 

Où:

  • label est le texte qui apparaît dans le menu;
  • variable est une instance tk.Variable, généralement un IntVar ou un StringVar;
  • value est la valeur à définir sur variable lorsque l'option est sélectionnée;
  • command est le rappel à exécuter lorsque l'option est sélectionnée.
+0

Travailler comme prévu mais mon soulignement ne fonctionne pas peut suggérer n'importe quelle procédure pour résoudre ceci. Merci –