Python 的 tkinter 创建 radiobutton 后,如何动态给 text 属性赋值
for n in range(4): tk.Radiobutton(tab_one, text='加载中', variable=Var, value=n).grid(row=n, column=0, sticky=tk.W)
我用 for 创建了 4 个 radiobutton,
然后会动态读入 4 个名字 存到 name 列表里。
因为 tkinter 创建窗口是时 name 列表里还没来得及读入数据。
所以 radiobutton 的 text 默认是:加载中
但问题是:name 存入数据后,我怎么把它传给 4 个 radiobutton 的 text 属性。
让它们显示出来??
Python 的 tkinter 创建 radiobutton 后,如何动态给 text 属性赋值
在tkinter里,动态设置Radiobutton的text属性很简单,因为每个Radiobutton都是独立的widget。你可以直接用config()方法或者直接修改text属性。
看这个例子,我创建了两个Radiobutton,然后加了个按钮来改它们的文字:
import tkinter as tk
def change_text():
# 方法1: 使用config()方法
rb1.config(text="新的选项一")
# 方法2: 直接修改text属性
rb2["text"] = "新的选项二"
root = tk.Tk()
root.geometry("300x200")
# 创建一个StringVar来管理Radiobutton的值
v = tk.StringVar(value="1")
# 创建两个Radiobutton
rb1 = tk.Radiobutton(root, text="原始选项一", variable=v, value="1")
rb1.pack(pady=10)
rb2 = tk.Radiobutton(root, text="原始选项二", variable=v, value="2")
rb2.pack(pady=10)
# 创建一个按钮来触发文本更改
btn = tk.Button(root, text="更改选项文字", command=change_text)
btn.pack(pady=20)
root.mainloop()
关键就这两行:
rb1.config(text="新的文字")rb2["text"] = "新的文字"
两种方式效果一样,用哪个看个人习惯。config()方法更明确,直接属性赋值写起来更快。
如果你有一组Radiobutton放在列表或字典里,批量改起来也很方便:
radio_buttons = [rb1, rb2]
new_texts = ["选项A", "选项B"]
for rb, new_text in zip(radio_buttons, new_texts):
rb.config(text=new_text)
总结:直接用config()或字典式赋值改text属性就行。
str = [tk.StringVar() for x in range(4)]
for n in range(4):
tk.Radiobutton(tab_one, text=‘加载中’, variable=Var, value=n).grid(row=n, column=0, sticky=tk.W)
先创建 gui 后,修改 radiobutton 的 text

