如何从Entry小部件中获取文本

时间:2015-03-09 17:06:05

标签: python-3.x tkinter tk

我查看了stackOverflow上的几个帖子来解释答案,但无论我使用哪个帖子,我都无法从我的条目小部件中获取字符串;它只是检测到一串“”

这是我的代码:

def buttonTest():
    global score
    gui.title("Test")
    for child in gui.winfo_children():
        child.destroy()
    global questionText
    global questionAnswer
    questionText = StringVar()
    questionAnswer = 0    
    question = Label(gui, textvariable = questionText, fg = "black", bg = "white")
    question.grid(row = 0, column = 1)
    userInput = StringVar()
    input = Entry(gui, textvariable = userInput)
    input.grid(row = 1, column = 0)

swapQuestion()

checkAns = Button(text = "Check answer", command = partial(checkAnswer, userInput.get(), questionAnswer), fg = "black", width=10)
checkAns.grid(row = 1, column = 2)

1 个答案:

答案 0 :(得分:1)

请阅读并遵循此SO help page。您的代码缺少运行所需的行,并且包含与您的问题无关的行。它也缺少缩进。

您的问题是,在用户输入任何内容之前,您只需在创建按钮时调用userInput.get()一次。那时,它的值确实是''。您必须在按钮命令功能中调用它,每次按下按钮时都会调用该功能。

这是一个运行和工作的最小完整示例。

import tkinter as tk

root = tk.Tk()

user_input = tk.StringVar(root)
answer = 3

def verify():
    print(int(user_input.get()) == answer)  # calling get() here!

entry = tk.Entry(root, textvariable=user_input)
entry.pack()
check = tk.Button(root, text='check 3', command=verify)
check.pack()

root.mainloop()