如何让TkInter显示用户输入?

0 投票
1 回答
4108 浏览
提问于 2025-04-17 23:22

我对TkInter和Python的图形用户界面(GUI)还比较陌生,不过我对Python本身有一些了解。我正在用TkInter做一个图形界面,想让用户输入他们的名字,然后在点击按钮时显示这个名字。以下是我目前的代码:

from Tkinter import *

master = Tk()

e = Entry(master)
e.pack()

e.focus_set()

def callback():
    print e.get() 

b = Button(master, text="get", width=10, command=callback)
b.pack()

separator = Frame(height=2, bd=1, relief=SUNKEN)
separator.pack(fill=X, padx=5, pady=5)

Label(text=callback).pack()

mainloop() 

用户会在一个叫做Entry(或者简称e)的输入框里输入他们的名字,我想把这个名字显示在标签控件上。有没有什么好主意可以实现这个?谢谢。

1 个回答

2

在最上面(导入的下面),定义一个叫 name 的东西,它是一个 StringVar 类型:

name = StringVar()

callback 这个函数里,把内容改成:

def callback():
    name.set(e.get())

最后,把你的 Label 组件改成:

Label(master, textvariable=name)

我做的事情是创建了一个特殊的对象,当我们改变它的值时,所有引用它的地方的值也会跟着改变。这样我们就可以设置一个函数来改变这个值,从而在全局范围内更新它。最后,我们利用这个特性,把这个变量作为 Label 的文本属性。

注意:我还给你的 Label 加了一个父级参数。如果没有这个参数,它根本不会显示出来。

撰写回答