我的代码获取计算机名称,然后查看文件夹并提取这些文件夹的名称以创建复选框,然后将它们显示给用户,以便他们可以选择要使用的文件夹。但是,如果您更改了计算机名称,我想删除所有当前复选框的名称,并显示新计算机名称中的新名称。我尝试过用多种方式销毁(),但它就是不起作用。我知道这与网格有关。
def CreateBoxes(folders):
if len(checkBoxList) != 0: #if there are already checkboxes then delete
for i in folders:
chk.destroy()
count=0
for i in folders: #Creates checkbuttons for each folder received
checkBoxList[i]=IntVar()
chk = Checkbutton(window, text=str(i), variable=checkBoxList[i])
chk.grid(row=0+count,column=4)
count += 1
发布于 2019-03-02 00:03:49
当chk.destroy()
执行时,它不理解chk
所指的是什么。您可能在该函数的早期执行中创建了一个名为chk
的变量,但在函数返回后,该名称已不复存在。
一种可能的解决方案是保留对每个复选框的外部引用。然后,您将能够在以后访问每一个并销毁它们。
checkboxes = []
def CreateBoxes(folders):
if len(checkBoxList) != 0: #if there are already checkboxes then delete
for chk in checkboxes:
chk.destroy()
checkboxes.clear()
count=0
for i in folders: #Creates checkbuttons for each folder received
checkBoxList[i]=IntVar()
chk = Checkbutton(window, text=str(i), variable=checkBoxList[i])
chk.grid(row=0+count,column=4)
checkboxes.append(chk)
count += 1
https://stackoverflow.com/questions/54948157
复制相似问题