You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用StringVar更新Tkinter Label显示异常问题求助

问题解决:Tkinter Label显示方法对象而非StringVar值

你的代码核心问题是调用StringVar的get方法时没有加括号,pseudo.get是引用方法本身,而非执行方法获取实际值,所以Label会显示方法对象的描述字符串。

修正后的代码

from tkinter import *
root = Tk()
pseudo = StringVar(root, value="")  # 初始值用空字符串更合理,无需加空格
couleur = IntVar(root, value=0)
message = StringVar(root, value="")


def choix_equipe():
    if couleur.get() == 1:
        # 关键修改:pseudo.get() 加括号执行方法获取值
        message.set("Bienvenue dans l'équipe bleue {}".format(pseudo.get()))
    elif couleur.get() == 2:
        # 用elif替代多个if,避免不必要的重复判断
        message.set("Bienvenue à l'équipe rouge {}".format(pseudo.get()))


entry_pseudo = Entry(root, textvariable=pseudo)
entry_pseudo.grid(row=1, columnspan=3)

label_entry = Label(root, text="Veuillez entrer votre pseudo : ")
label_entry.grid(row=0, columnspan=3)

label_equipes = Label(root, text="Veuillez choisir votre équipe : ")
label_equipes.grid(row=2, columnspan=3)

equipe_rouge = Radiobutton(root, text="Rouge", variable=couleur, value=2)
equipe_rouge.grid(row=3, column=1)

equipe_bleue = Radiobutton(root, text="Bleue", variable=couleur, value=1)
equipe_bleue.grid(row=4, column=1)

bouton_ok = Button(root, text="OK", command=choix_equipe)
bouton_ok.grid(row=6, column=3)

label_message = Label(root, textvariable=message)
label_message.grid(row=5)

root.mainloop()

关键修改说明

  • 所有pseudo.get改为pseudo.get():get()是StringVar的内置方法,必须加括号才能执行并返回存储的字符串值。
  • 用elif替代第二个if:当第一个条件满足时,不会再判断第二个条件,提升代码执行效率。
  • 调整StringVar初始值:空字符串""比空格更适合作为输入框的默认状态。

内容的提问来源于stack exchange,提问作者ObnoxiousPotato

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 00:38:30