2017-08-28 111 views
1

我想在我的GUI中名爲「Channel」的子菜單中設置一組兩個單選按鈕「BBC」和「CNN」。 我嘗試使用add_radiobutton方法,但單選按鈕顯示在子菜單下,而我希望它們表現爲「頻道」子菜單的屬性,而不是「新聞」菜單的其他子菜單。如何添加單選按鈕到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

你想讓菜單彈出到'頻道'右邊的選項BBC,CNN作爲側面菜單嗎? –

+0

恰到好處。 –

+0

你明確地將它們添加到文件菜單中。你爲什麼期望他們出現在別的地方?你有沒有嘗試將它們添加到你想要的菜單上? –

回答

1

你必須做一個子菜單第一,單選按鈕添加到它,然後將其添加爲級聯到主菜單。然後,將該菜單添加到您的菜單欄。

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) 

全部工作示例:

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() 

你可能會想一些屬性添加到您的單選按鈕。 更完整的形式是:

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

其中:

  • label是出現在菜單中的文本;
  • variabletk.Variable實例,通常是IntVarStringVar;
  • value是選擇選項時設置爲variable的值;
  • command是選擇該選項時要執行的回調。
+0

按預期工作,但我的下劃線不起作用可以建議任何程序來解決此問題。謝謝 –