Python 为什么Tkinter Entry';让函数什么也不返回?
我正在尝试使用Python 为什么Tkinter Entry';让函数什么也不返回?,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
输入
字段来获得手动输入,然后处理该数据
我找到的所有资料都声称我应该使用get()
函数,但我还没有找到一个简单的小型示例,我无法让它工作
我希望有人能告诉我我做错了什么。这里有一个小文件:
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()
这给了我一个可以输入的条目
字段,但是一旦输入数据,我就不能对它做任何事情
我怀疑我的代码不起作用,因为最初,
entry
为空。但是一旦输入数据,我如何访问它呢?您也可以使用StringVar
变量,即使它不是严格必需的:
v = StringVar()
e = Entry(master, textvariable=v)
e.pack()
v.set("a default value")
s = v.get()
有关详细信息,请参见。您可能会对何时运行命令感到困惑。在您的示例中,您正在调用
get
方法,然后GUI才有机会显示在屏幕上(这发生在调用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函数中,然后您没有使用
.get
函数和您设置的textvariable。一个没有类的简单示例:
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()
从tkinter导入*
master=Tk()
#在创建条目之前创建此方法
def返回_条目(en):
“”“获取并打印条目的内容”“”
content=entry.get()
打印(内容)
标签(master,text=“Input:”).grid(行=0,粘性=W)
入口=入口(主)
entry.grid(行=0,列=1)
#用返回按钮连接条目
条目的绑定(“”,返回条目的)
mainloop()
您需要在其中放入一个textvariable,这样您就可以使用set()
和get()
方法:
var=StringVar()
x= Entry (root,textvariable=var)
在您的示例中,您到底希望得到什么?在调用
get
之前,您没有给entry小部件任何文本,因此它当然返回空字符串。严格来说,StringVar
不是必需的。它们很方便,但对于这个问题,它们完全是多余的。啊,我明白了。我对类还不是很严格(一般来说,我还是一个编程初学者),但我看到了问题所在。我只需要做一个“Analyze!”按钮,然后将get()函数放在那里,这应该可以工作。谢谢!在调用超类init:tk.tk.\uuu init\uuuu(self)时,您可能需要添加self作为参数.否则,这是一个非常有用的例子!而且,呃,你在最后一行错发了应用程序。