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

AD *_*WAN 4 python tkinter menubar radio-button submenu

我想在 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()
Run Code Online (Sandbox Code Playgroud)

Rig*_*leg 7

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

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)
Run Code Online (Sandbox Code Playgroud)

完整的工作示例:

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()
Run Code Online (Sandbox Code Playgroud)

您可能想向单选按钮添加一些属性。更完整的形式是:

add_radiobutton(label="Option 1", value=1, variable=optionVar, command=on_option_1)
Run Code Online (Sandbox Code Playgroud)

在哪里:

  • label是出现在菜单中的文本;
  • variable是一个tk.Variable实例,通常是 anIntVar或 a StringVar
  • valuevariable是选择选项时要设置的值;
  • command是选择选项时要运行的回调。