首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python 3- Tkinter销毁()不适用于动态复选按钮

Python 3- Tkinter销毁()不适用于动态复选按钮
EN

Stack Overflow用户
提问于 2019-03-01 23:56:45
回答 1查看 122关注 0票数 2

我的代码获取计算机名称,然后查看文件夹并提取这些文件夹的名称以创建复选框,然后将它们显示给用户,以便他们可以选择要使用的文件夹。但是,如果您更改了计算机名称,我想删除所有当前复选框的名称,并显示新计算机名称中的新名称。我尝试过用多种方式销毁(),但它就是不起作用。我知道这与网格有关。

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-02 00:03:49

chk.destroy()执行时,它不理解chk所指的是什么。您可能在该函数的早期执行中创建了一个名为chk的变量,但在函数返回后,该名称已不复存在。

一种可能的解决方案是保留对每个复选框的外部引用。然后,您将能够在以后访问每一个并销毁它们。

代码语言:javascript
复制
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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54948157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档