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

Posted

技术标签:

【中文标题】如何在 Tkinter 中将单选按钮添加到子菜单【英文标题】:How to add radiobuttons to a submenu in Tkinter 【发布时间】:2018-02-05 21:11:33 【问题描述】:

我想在我的 GUI 中名为“Channel”的子菜单中有一组两个单选按钮“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()

【问题讨论】:

您是否要在Channel 的右侧弹出菜单,并将选项 BBC、CNN 作为侧边菜单? 正好在右侧。 您明确地将它们添加到文件菜单中。为什么你希望他们出现在其他地方?您是否尝试过将它们添加到您希望它们出现的菜单中? 【参考方案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 实例,一般是 IntVarStringVarvalue 是选择该选项时设置为 variable 的值; command 是选择该选项时要运行的回调。

【讨论】:

按预期工作但我的下划线不起作用可以建议任何解决此问题的程序。谢谢 @Right leg : 提供“变量”属性后,用户选项选择进入多选,而只需要选择一个选项。

以上是关于如何在 Tkinter 中将单选按钮添加到子菜单的主要内容,如果未能解决你的问题,请参考以下文章

Python里tkinter如何重置单选按钮?

如何在不单击tkinter python的情况下读取单选按钮值

如何在 tkinter 中只选择一个单选按钮

如何在 Python Tkinter 的按钮下方移动单选按钮的文本标签?

在 Python 3 中使用 tkinter 更改单选按钮的背景颜色

Tkinter:所有单选按钮都已被选中