使用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
相关产品推荐
相关产品推荐

