我需要从定义它们的函数外部访问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()
但是条目窗口小部件不在范围内,因此该功能无法看到。有没有一种方法可以不使用全局变量?
答案 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