You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动