Python Tkinter二级窗口标签无法显示输入文本问题求助
你的Tkinter代码问题分析与修复方案
嘿,我来帮你排查下为什么输入的文本显示不出来~主要有两个关键问题,咱们一个个说:
核心问题:错误使用Tk()创建二级窗口
Tkinter的规则是:一个应用程序只能有一个Tk()实例(也就是主窗口),所有弹出的二级窗口都得用Toplevel()来创建。你用Tk()创建第二个窗口时,它会生成一个独立的事件循环和变量上下文,导致你定义的StringVar和输入框、标签的绑定失效,输入的内容自然没法传递到标签里。
次要问题:重复创建标签(可优化)
你当前的代码每次点击按钮都会新建一个绿色背景的Label,点多了界面会堆一堆标签。更合理的做法是先创建一个空标签,每次点击时更新它的文本内容。
修复后的完整代码
from tkinter import * root = Tk() root.title("main") root.geometry("300x300") def call2(): # 用Toplevel()代替Tk()创建二级窗口 rt = Toplevel(root) rt.title("second screen") rt.geometry("400x400") a = StringVar() Entry(rt, textvariable=a).pack(pady=10) # 先创建一个空标签,后续更新文本 result_label = Label(rt, bg="green", width=30, height=2) result_label.pack(pady=10) def call3(): b = a.get() # 更新已有标签的文本,而不是新建标签 result_label.config(text=b) Button(rt, text="显示输入内容", command=call3).pack() Button(root, text="enter into", command=call2).pack(pady=50) root.mainloop()
内容的提问来源于stack exchange,提问作者suraj pal




