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 属性赋值

3 回复

在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

回到顶部