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作为参数.否则,这是一个非常有用的例子!而且,呃,你在最后一行错发了应用程序。