无法在 Tkinter 中修改全局标签 python
Cannot modify global Label in Tkinter python
我只是想使用 tkinter
制作一个 Radiobutton
GUI。我想在其中 change/replace “Select 你的浇头” Label
(myLabel
) 每次用户选择 Radiobutton
时 Radiobutton
姓名。因此,我面临的错误不是替换该标签,而是在下面创建一个新标签,即使我使用的是全局 Label
.
from tkinter import *
root = Tk()
Toppings = [
["Pepperoni", "Pepperoni"],
["Cheese", "Cheese"],
["Mushroom", "Mushroom"],
["Onion", "Onion"]
]
pizza = StringVar()
pizza.set("Select your toppings")
for topping, value in Toppings:
Radiobutton(root, text = topping, variable = pizza, value = value). pack(anchor = W)
myLabel = Label(root, text = pizza.get())
myLabel.pack()
def clicked(value):
global myLabel
myLabel.grid_forget()
myLabel = Label(root, text = value)
myLabel.pack()
myButton = Button(root, text="CLick me!", command = lambda: clicked(pizza.get()))
myButton.pack()
root.mainloop()
使用 .config
配置特定的小部件选项(在这种情况下不需要使用 global
)(以及为什么覆盖它不起作用的解释是因为你需要如果你想这样做但没有必要,可以通过调用 .destroy
将其从 Tcl
中删除):
def clicked(value):
myLabel.config(text=value)
此外,我建议遵循 PEP 8,如果在关键字参数中使用 space,则不要在 =
周围使用 space,变量名也应在 snake_case
中。导入模块时不要使用 *
,只导入你需要的。
进一步改进:
from tkinter import Tk, Label, Radiobutton, StringVar
toppings = [
"Pepperoni",
"Cheese",
"Mushroom",
"Onion"
]
root = Tk()
topping_var = StringVar(value='Select your topping')
for topping in toppings:
Radiobutton(root, text=topping, variable=topping_var, value=topping).pack(anchor='w')
myLabel = Label(root, textvariable=topping_var)
myLabel.pack()
root.mainloop()
您不需要使用按钮,只需将变量设置为 Label
的 textvariable
即可
我只是想使用 tkinter
制作一个 Radiobutton
GUI。我想在其中 change/replace “Select 你的浇头” Label
(myLabel
) 每次用户选择 Radiobutton
时 Radiobutton
姓名。因此,我面临的错误不是替换该标签,而是在下面创建一个新标签,即使我使用的是全局 Label
.
from tkinter import *
root = Tk()
Toppings = [
["Pepperoni", "Pepperoni"],
["Cheese", "Cheese"],
["Mushroom", "Mushroom"],
["Onion", "Onion"]
]
pizza = StringVar()
pizza.set("Select your toppings")
for topping, value in Toppings:
Radiobutton(root, text = topping, variable = pizza, value = value). pack(anchor = W)
myLabel = Label(root, text = pizza.get())
myLabel.pack()
def clicked(value):
global myLabel
myLabel.grid_forget()
myLabel = Label(root, text = value)
myLabel.pack()
myButton = Button(root, text="CLick me!", command = lambda: clicked(pizza.get()))
myButton.pack()
root.mainloop()
使用 .config
配置特定的小部件选项(在这种情况下不需要使用 global
)(以及为什么覆盖它不起作用的解释是因为你需要如果你想这样做但没有必要,可以通过调用 .destroy
将其从 Tcl
中删除):
def clicked(value):
myLabel.config(text=value)
此外,我建议遵循 PEP 8,如果在关键字参数中使用 space,则不要在 =
周围使用 space,变量名也应在 snake_case
中。导入模块时不要使用 *
,只导入你需要的。
进一步改进:
from tkinter import Tk, Label, Radiobutton, StringVar
toppings = [
"Pepperoni",
"Cheese",
"Mushroom",
"Onion"
]
root = Tk()
topping_var = StringVar(value='Select your topping')
for topping in toppings:
Radiobutton(root, text=topping, variable=topping_var, value=topping).pack(anchor='w')
myLabel = Label(root, textvariable=topping_var)
myLabel.pack()
root.mainloop()
您不需要使用按钮,只需将变量设置为 Label
的 textvariable
即可