如何實作單選按鈕在每個選單中單獨切換而不是全域切換?例如,當我在家庭選單中切換單選按鈕時,它在大小選單中未選中,反之亦然。
我還想為每個選單設定一個默認的選中單選按鈕,但我不知道該怎么做。
這是我的代碼:
#!/usr/bin/env python3
from tkinter import *
root = Tk ()
root.geometry ("500x500")
root.title ("Program")
menu_bar = Menu (
master = root
)
root.config (
menu = menu_bar
)
fami_menu = Menu (
master = menu_bar,
tearoff = False,
)
fami_menu.add_radiobutton (
label = "Sans Serif",
)
fami_menu.add_radiobutton (
label = "Serif",
)
menu_bar.add_cascade (
label = "Family",
menu = fami_menu,
)
size_menu = Menu (
master = menu_bar,
tearoff = False,
)
size_menu.add_radiobutton (
label = "11",
)
size_menu.add_radiobutton (
label = "12",
)
menu_bar.add_cascade (
label = "Size",
menu = size_menu,
)
root.mainloop ()
uj5u.com熱心網友回復:
您需要variable為每組單選按鈕添加一個,其中variable是 a StringVar()、IntVar()或類似的。您可以通過將此變數設定為與您的一個按鈕匹配的“值”來設定默認單選選項。
# this variable will store the value of the selected button
fami_var = tk.StringVar() # I'm using a string variable here
fami_menu.add_radiobutton (
label="Sans Serif",
value='Sans', # this can be whatever string you want
variable=fami_var,
)
fami_menu.add_radiobutton (
label="Serif",
value='Serif',
variable=fami_var,
)
fami_var.set('Sans') # set the default selection
你會想要做一個類似的事情size_menu和一個單獨的StringVar()
uj5u.com熱心網友回復:
您必須Stringvar為每個選單創建一個變數 ( ),并在實體化單選按鈕時使用 kwarg 指定它variable。這樣它們將被獨立設定:
from tkinter import *
root = Tk ()
root.geometry ("500x500")
root.title ("Program")
menu_bar = Menu (
master = root
)
root.config (
menu = menu_bar
)
fami_menu = Menu (
master = menu_bar,
tearoff = False,
)
menu_bar.add_cascade (
label = "Family",
menu = fami_menu,
)
fami_selected = StringVar()
fami_menu.add_radiobutton (
label = "Sans Serif",
variable = fami_selected
)
fami_menu.add_radiobutton (
label = "Serif",
variable = fami_selected
)
size_menu = Menu (
master = menu_bar,
tearoff = False,
)
menu_bar.add_cascade (
label = "Size",
menu = size_menu,
)
size_selected = StringVar()
size_menu.add_radiobutton (
label = "11",
variable = size_selected
)
size_menu.add_radiobutton (
label = "12",
variable = size_selected
)
root.mainloop ()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/521321.html
