如何在Tkinter中的子菜单中添加单选按钮

4

我想在GUI的子菜单“频道”中有一组两个单选按钮“BBC”和“CNN”。我尝试使用add_radiobutton方法,但是单选按钮出现在子菜单下面,而我希望它们作为“频道”子菜单的属性,而不是“新闻”菜单的附加子菜单。

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

你想让菜单在“频道”右侧弹出,作为侧边菜单,选项包括BBC和CNN吗? - Mike - SMT
正好在右侧。 - AD WAN
你明确地将它们添加到文件菜单中。为什么你期望它们出现在其他地方?你尝试过将它们添加到你想要它们出现的菜单上吗? - Bryan Oakley
1个回答

6

您需要先创建一个子菜单,然后添加单选按钮,并将其作为级联添加到主菜单中。然后将该菜单添加到菜单栏中。

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 是菜单中显示的文本;
  • variable 是一个 tk.Variable 实例,通常是 IntVarStringVar
  • value 是选中该选项时设置给 variable 的值;
  • command 是在选择该选项时要运行的回调函数。

正常工作,但我的下划线不起作用,您能建议任何解决此问题的程序吗?谢谢。 - AD WAN
1
@右腿:在提供属性“变量”之后,用户选项选择进入多选模式,而只需要选择一个选项。 - Pranjay Kaparuwan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接