Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么Tkinter条目的get函数不返回任何内容?_Python_Python 3.x_Tkinter_Get_Tkinter Entry - Fatal编程技术网

Python 为什么Tkinter条目的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

我正在尝试使用一个输入字段来获得手动输入,然后处理该数据

我找到的所有资料都声称我应该使用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()
这给了我一个可以输入的输入字段,但是一旦输入数据,我就不能对它做任何事情

我怀疑我的代码不起作用,因为一开始,条目是空的。但是一旦输入数据,我如何访问它呢?

您也可以使用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)