Python 如何删除未保存的tkinker标签?

Python 如何删除未保存的tkinker标签?,python,tkinter,grid,labels,Python,Tkinter,Grid,Labels,我制作了这个程序,我把标签放在网格上,而不把它们保存在变量中。我这样做是因为这样我就可以通过类列表进行for循环,从中获取每个类的数据,并将它们添加到一行中。这是其中的一小部分: self.collum = 0 for i in self.gui_resource_list: Label(text=i.get_name(), relief="groove", width=15).grid(column=self.column, row=0) Label(text=i.get_buyP

我制作了这个程序,我把标签放在网格上,而不把它们保存在变量中。我这样做是因为这样我就可以通过类列表进行for循环,从中获取每个类的数据,并将它们添加到一行中。这是其中的一小部分:

self.collum = 0
for i in self.gui_resource_list:
   Label(text=i.get_name(), relief="groove", width=15).grid(column=self.column, row=0)
   Label(text=i.get_buyPrice(), relief="groove", width=15).grid(column=self.column, row=1)
   Label(text=i.get_salePrice(), relief="groove", width=15).grid(column=self.column, row=2)
   Label(text=i.arrow, relief="groove", width=15).grid(column=self.column,row=3)
   self.column += 1
这将生成一个类似于表的布局。然后有一个按钮,用于更新再次运行for循环的所有值。因此,它基本上在旧标签的基础上绘制新标签。这是不好的,因为当您在转弯300处时,有300个标签乘以
gui\u resource
列表中的所有资源实例。解决此问题的一种方法是删除旧标签

有没有办法删除未保存的标签?比如:

delete_grid(column=2,row=3) 

这将删除网格中位置2,3处的所有内容。

您可以要求网格提供其管理的小部件列表。然后,您可以遍历该列表,找出每行和每列中都有哪个小部件

例如,如果希望能够修改小部件中特定行或列的文本,可以执行以下操作:

def set_item_text(master, row, column, text):
    for child in master.grid_slaves():
        grid_info = child.grid_info()
        if grid_info['row'] == row and grid_info['column'] == column:
            child.configure(text=text)
下面的示例将第2行第2列中的文本更改为“hello,world”:


您可以同样轻松地删除小部件,但是如果您只是想刷新“类似于表的东西”,那么更改数据比删除并重新创建所有小部件更有效

为什么需要创建新标签?为什么不只是更改现有标签上的文本?请针对您遇到的特定问题提供一个解决方案,而不是某些代码的一部分。谢谢!我最终制作了一个更新系统,结果更好。谢谢你的网格知识,我不知道这是你可以做的。谢谢这个wil HELP上面的代码返回错误,尽管我相信这正好回答了问题的标题。只是修复了它。谢谢你注意到了@Nae<
标签中缺少code>text
参数。也许是因为我进行了互动,然后根据记忆输入。这总是失败:)
from pprint import pprint
from tkinter import Tk, Label

root = Tk()
Label(root, text='MyLabel').pack()
Label(root, text='MyLabel').pack()
Label(root, text='MyLabel').pack()

# as you did not kept references to the labels
# you have to look into the childrens of root

pprint(root.children) # show root children names
print()

root.children['!label2'].destroy() # do what you asked on the second Label
pprint(root.children) # check that it's gone
from pprint import pprint
from tkinter import Tk, Label

root = Tk()
Label(root, text='MyLabel').pack()
Label(root, text='MyLabel').pack()
Label(root, text='MyLabel').pack()

# as you did not kept references to the labels
# you have to look into the childrens of root

pprint(root.children) # show root children names
print()

root.children['!label2'].destroy() # do what you asked on the second Label
pprint(root.children) # check that it's gone