我该如何忘记由for
循环创建的小部件?你知道吗
例如,我有以下代码:
for getSong in a.findAll('name'):
z += 1
x += 1
if z == 11:
break
else:
text = ''.join(getSong.findAll(text=True))
data = text.strip()
songLab = Label(frame1, text=data)
之后,用户按下Button
并更新小部件,如下所示:
def update():
try:
openArtist.pack_forget()
artistLab.pack_forget()
songLab.pack_forget()
getScrobbledTracksArtist()
except NameError:
getScrobbledTracksArtist()
其他小部件被在for
循环中创建的小部件删除,但没有。你知道吗
示例如下:
在更新小部件之前
更新小部件后
如您所见,只删除了小部件的一行。你知道吗
编辑
我试过复制,但对我不起作用。 我列了一个清单,确保标签被添加到清单中,它们是。你知道吗
labels = []
for getSong in a.findAll('name'):
z += 1
x += 1
if z == 11:
break
else:
text = ''.join(getSong.findAll(text=True))
data = text.strip()
songLab = Label(frame1, text=data)
labels.append(songLab)
songLab.pack()
然后在按下Button
之后,小部件将更新。你知道吗
def update1():
try:
openArtist.pack_forget()
artistLab.pack_forget()
labels[0].destroy()
print labels
getScrobbledTracksArtist()
except NameError:
getScrobbledTracksArtist()
标签仍在清单中,没有被销毁。你知道吗
和其他小部件一样,您只需保留对它的引用。例如,您可以将每个小部件附加到一个列表中,然后遍历该列表以删除这些小部件。你知道吗
我们来看看这个代码:
您只删除了列表中的第一个标签,但未能将其从列表中删除。相反,您需要做的是在列表上循环,销毁每个小部件。然后可以重新初始化列表:
但是,您还有另一个问题,
labels
可能是局部变量。您需要将其声明为全局,以便两个不同的函数能够访问和修改列表。你知道吗这些都与tkinter无关,这只是所有python对象的工作方式。你知道吗
相关问题 更多 >
编程相关推荐