Python 为什么Tkinter条目的get函数不返回任何内容?
我正在尝试使用一个输入字段来获得手动输入,然后处理该数据 我找到的所有资料都声称我应该使用get函数,但我还没有找到一个简单的小型示例,我无法让它工作 我希望有人能告诉我我做错了什么。这里有一个小文件:Python 为什么Tkinter条目的get函数不返回任何内容?,python,python-3.x,tkinter,get,tkinter-entry,Python,Python 3.x,Tkinter,Get,Tkinter Entry,我正在尝试使用一个输入字段来获得手动输入,然后处理该数据 我找到的所有资料都声称我应该使用get函数,但我还没有找到一个简单的小型示例,我无法让它工作 我希望有人能告诉我我做错了什么。这里有一个小文件: from tkinter import * master = Tk() Label(master, text="Input: ").grid(row=0, sticky=W) entry = Entry(master) entry.grid(row=0, column=1) conte
from tkinter import *
master = Tk()
Label(master, text="Input: ").grid(row=0, sticky=W)
entry = Entry(master)
entry.grid(row=0, column=1)
content = entry.get()
print(content) # does not work
mainloop()
这给了我一个可以输入的输入字段,但是一旦输入数据,我就不能对它做任何事情
我怀疑我的代码不起作用,因为一开始,条目是空的。但是一旦输入数据,我如何访问它呢?您也可以使用StringVar变量,即使它不是严格必需的:
v = StringVar()
e = Entry(master, textvariable=v)
e.pack()
v.set("a default value")
s = v.get()
有关详细信息,请参见。您可能会对何时运行命令感到困惑。在您的示例中,您是在GUI有机会显示在屏幕上之前调用get方法的,这是在您调用mainloop之后发生的 尝试添加一个调用get方法的按钮。如果将应用程序作为一个类编写,这会容易得多。例如:
import tkinter as tk
class SampleApp(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.entry = tk.Entry(self)
self.button = tk.Button(self, text="Get", command=self.on_button)
self.button.pack()
self.entry.pack()
def on_button(self):
print(self.entry.get())
app = SampleApp()
app.mainloop()
运行程序,输入条目小部件,然后单击按钮 *
master = Tk()
entryb1 = StringVar
Label(master, text="Input: ").grid(row=0, sticky=W)
Entry(master, textvariable=entryb1).grid(row=1, column=1)
b1 = Button(master, text="continue", command=print_content)
b1.grid(row=2, column=1)
def print_content():
global entryb1
content = entryb1.get()
print(content)
master.mainloop()
您所做的错误是没有将其放入Define函数中,那么您就没有使用带有设置的textvariable的.get函数 一个没有类的简单示例:
from tkinter import *
master = Tk()
# Create this method before you create the entry
def return_entry(en):
"""Gets and prints the content of the entry"""
content = entry.get()
print(content)
Label(master, text="Input: ").grid(row=0, sticky=W)
entry = Entry(master)
entry.grid(row=0, column=1)
# Connect the entry with the return button
entry.bind('<Return>', return_entry)
mainloop()
您需要在其中放入一个textvariable,以便可以使用set和get方法:
在你的例子中,你到底期望什么?在调用get之前,您没有给entry小部件任何文本,因此它当然返回一个空字符串。它们很方便,但在这个问题上它们是完全多余的。啊,我明白了。我对课程的要求不是很严格,但总体来说,我还是一个编程初学者,但我看到了问题所在。我来做个分析!按钮并将get函数放在那里,应该可以工作。非常感谢。在调用超类init:tk.tk.\uuu init\uu self时,您可能需要添加self作为参数。否则,很有用的例子!还有,呃,你在最后一行错发了应用程序。
var=StringVar()
x= Entry (root,textvariable=var)