python 如何使用add_radibutton()级联Tkinter中的Menu(),以在其中一个值旁边设置默认复选标记?

o2gm4chl  于 2023-01-29  发布在  Python
关注(0)|答案(2)|浏览(90)

当程序以默认大小启动时,例如10x10,在大小子菜单中,复选标记应该已经在10x10行的前面。需要最初指定其中一个选项,然后才能选择任何选项。

from tkinter import Tk, Menu

root = Tk()
menubar = Menu(root)
size = Menu(menubar, tearoff=0)
size.add_radiobutton(label='5x5')
size.add_radiobutton(label='10x10')  # <- Checkmark must be here when program starts.
                                     # When choosing another option, it must be unmarked,
                                     # like in this example
size.add_radiobutton(label='15x15')
menubar.add_cascade(label='Size', menu=size)
root.config(menu=menubar)
root.mainloop()
fwzugrvs

fwzugrvs1#

单选按钮需要一个Tk variable来对按钮进行分组。下面的代码使用了一个IntVar。结果在一个Label中报告。

import tkinter as tk

root = tk.Tk()
root.geometry( '100x100')
radio_var = tk.IntVar( value = 10 )  # Option 10 is the default.

menubar = tk.Menu(root)
size = tk.Menu(menubar, tearoff=0)
size.add_radiobutton(label='5x5', variable = radio_var, value = 5 )
size.add_radiobutton(label='10x10', variable = radio_var, value = 10 )
size.add_radiobutton(label='15x15', variable = radio_var, value = 15 )
menubar.add_cascade(label='Size', menu=size)
root.config(menu=menubar)
 
lab = tk.Label( root, textvariable = radio_var )
lab.grid()

root.mainloop()
hof1towb

hof1towb2#

不要在开始处添加_radibutton。只有您可以将add_radiobutton添加到子菜单中。并创建另一个subemenu1submenu2等。
代码:

from tkinter import Tk, Frame, Menu

 
root = Tk()
root.title("Submenu")

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

_menu = Menu(menubar, tearoff=0)

submenu1 = Menu(_menu, tearoff=0)
submenu1.add_radiobutton(label="5x5")
submenu1.add_radiobutton(label="OPtion 3")
submenu1.add_radiobutton(label="Option 4")

submenu = Menu(_menu, tearoff=0 )
submenu.add_radiobutton(label="10x10")
submenu.add_radiobutton(label="Option 1")
submenu.add_radiobutton(label="Option 2")
 

_menu .add_cascade(label="5x5", menu=submenu1)
_menu .add_cascade(label='10x10', menu=submenu) 
_menu .add_cascade(label="15x15")
menubar.add_cascade(label="Size", menu=_menu )

root.mainloop()

相关问题