如何从 Entry 小部件获取文本

How to get text from Entry widget

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

这是我的代码:

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)

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

您的问题是您在创建按钮时只调用了一次 userInput.get(),然后用户才能输入任何内容。那时候,它的价值确实是''。您必须在每次按下按钮时调用的按钮命令函数中调用它。

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

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()

简单示例:

from tkinter import *

# Get Entry contents
def print_input():
    print(input_variable.get())


window = Tk()

# Create widgets
input_variable = StringVar()
entry_variable = Entry(window, textvariable=input_variable).grid(row=0, column=0)

button_submit = Button(window, text="Submit",command=print_input).grid(row=1, column=0)

window.mainloop()

其中:

  • input_variable 是你的变量
  • entry_variable是输入框
  • button_submit 调用 print_input() 获取并打印存储在 input_variable
  • 中的 entry_variable 的内容