从外部功能访问tkinter条目

时间:2019-11-25 17:31:06

标签: python user-interface tkinter scope

我需要从定义它们的函数外部访问Entry小部件的内容。 我有一个主窗口,它调用一个函数来创建另一个窗口:

def submit():
    print(entry.get())

def function():
    window2 = Tk()
    …
    entry = Entry(window2)
    button2 = Button(window2, command=submit)
    …
    window2.mainloop()

window = Tk()
…
button = Button(window, command=function)
...
window.mainloop()

但是条目窗口小部件不在范围内,因此该功能无法看到。有没有一种方法可以不使用全局变量?

2 个答案:

答案 0 :(得分:1)

tkinter不需要做任何特殊的事情。与python中的任何对象一样,如果要访问该对象,则需要保留对该对象的引用。

例如,您使entry成为全局变量。或者,您可以function然后将entry小部件作为参数传递给submit函数。

这是后者的一个例子:

def submit(entry):
    print(entry.get())

def function():
    ...
    entry = Entry(window2)
    button2 = Button(window2, command=lambda entry=entry: submit(entry))

您将遇到其他问题-决不能创建多个Tk实例。如果需要多个窗口,请创建Toplevel的实例。另外,您几乎绝对不应多次致电mainloop。您只需要运行一个实例。

答案 1 :(得分:-1)

您可以使用StringVar(),它是tkinter的类。使用它可以方便地监视tkinter变量的更改。

part_text = StringVar() # Create a string var which acts like a text holder
part_entry = Entry(app, textvariable=part_text) # pass it to the entry
part_text.get() #this is how to access the text in the entry anywhere in your script