如何在Python中刷新窗口
我有一个功能,可以显示图片的特征。一旦这些特征显示出来,我想为下一张图片刷新这些内容。
比如说,如果我有一个这样的窗口:

当我点击刷新按钮后,窗口应该变成这样:

一开始,所有特征的值都设置为零。
我该怎么做呢?我试过用grid_forget()
,但这并不能达到我想要的效果。我并不想清空整个窗口,只是想清除每个输入框里的内容,还想清除标签,这样我就可以选择另一张图片了。
谢谢大家的帮助!
2 个回答
0
你只需要把输入框的默认值设置成你想要的任何值就可以了:
# if you do not use the textvariable attribute:
self.entry1.delete(0, "end")
self.entry1.insert(0, "0")
self.entry2.delete(0, "end")
self.entry2.insert(0, "0.0")
# if you DO use the textvariable attribute:
self.entry1var.set("0")
self.entry2var.set("0.0")
这些内容在Entry的手册页里都有说明,很多tkinter的教程也会提到。想要了解如何使用各种小部件,可以去effbot.org网站看看。比如,这里有他们关于输入框(Entry小部件)的页面: http://effbot.org/tkinterbook/entry.htm
2
如果你有很多输入框,比如你例子中的那样,你可以使用 winfo_children()
这个方法来获取一个对象下所有子控件的列表。然后,你可以遍历这个列表,重置和配置里面的控件:
root = Tk()
def clear_all():
for widget in root.winfo_children(): # get all children of root
if widget.winfo_class() == 'Entry': # if the class is Entry
widget.delete(0,END) # reset its value
elif widget.winfo_class() == 'Label': # get Label widgets
widget.config(bg='green') # and change them as well
# set up misc. widgets
for i in range(5):
Entry(root).pack()
Label(root, height=10, width=100, bg='red').pack()
Button(root, text='Refresh', command=clear_all).pack()
mainloop()