Python Can';t复制Tkinter条目的值
所以我有这个代码:Python Can';t复制Tkinter条目的值,python,tkinter,Python,Tkinter,所以我有这个代码: from Tkinter import * Admin = Tk() def searches(): gett = search.get() lab = Label(frame, text='searching for ' + gett) lab.pack(side='bottom') frame = Frame(Admin) frame.pack() search = Entry(frame) search.pack(side='left') b
from Tkinter import *
Admin = Tk()
def searches():
gett = search.get()
lab = Label(frame, text='searching for ' + gett)
lab.pack(side='bottom')
frame = Frame(Admin)
frame.pack()
search = Entry(frame)
search.pack(side='left')
button = Button(frame, text='Search', command=searches)
button.pack(side='right')
getts = search.get()
Admin.mainloop()
other = getts
print other
但是“other”不会继承条目中的文本,请帮助。您正在调用
search.get()
并将结果分配给getts
——然后在屏幕上显示GUI之前将其分配给other
。因此,search.get()
的结果将是空字符串,因为您没有用任何数据预加载小部件。由于getts
为空,当它被分配给other
时,other
也为空。在主循环执行之前设置getts
。运行程序并在输入字段中输入内容时,不会更改已设置变量的值
如果要在Admin.mainloop()
退出后读取输入字段的值,则必须让Tkinter对象设置getts
的值以响应某些GUI操作。一种方法是在退出时回调。例如,见。在你的情况下,你想要
Admin.protocol("WM_DELETE_WINDOW", SomeFunctionWhichSetsGetts)
或者更好的是(进一步阅读链接文章)使用
destroy()
方法创建Entry
的子类,该方法为您设置getts
。getts
在mainloop
之前被赋值(即在您的窗口被显示之前);将other
分配给getts
对您没有帮助。相反,在适当的时间查看回调以获取值。