如何在 tkinter 中从网格中删除小部件?
我在一个tkinter的框架里有一个网格,用来显示查询结果。这个网格里有一个日期字段,用户可以手动更改这个日期,然后这个日期会作为查询的参数来获取结果。每次日期改变时,结果自然会变化,可能会有不同数量的行。如果第二次查询的结果行数少了,那么之前的查询结果行就会留在下面,这样会让人很困惑。
我想问的是,怎么才能删除框架中所有行号大于6的行(不管里面有什么内容)呢?
顺便说一下,我使用的是Python 3.3.3。谢谢!
1 个回答
24
调用 grid_forget
方法可以把某个组件从窗口中移除。这个例子中,使用 grid_slaves
方法在父组件上找到所有已经放置在网格中的组件,然后通过 grid_info
方法来了解每个组件的位置。
>>> import tkinter
# create:
>>> a = tkinter.Tk()
>>> for i in range(10):
... label = tkinter.Label(a, text=str(i))
... label.grid(column=0, row=i)
# remove from screen:
>>> for label in a.grid_slaves():
... if int(label.grid_info()["row"]) > 6:
... label.grid_forget()