Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tkinter:列表中的添加和自删除按钮|添加作品,不删除 我只是在为一个程序创建一个输入表单,看来我已经陷入了这个问题的逻辑。_Python_Button_Tkinter_Callback_Optionmenu - Fatal编程技术网

Python Tkinter:列表中的添加和自删除按钮|添加作品,不删除 我只是在为一个程序创建一个输入表单,看来我已经陷入了这个问题的逻辑。

Python Tkinter:列表中的添加和自删除按钮|添加作品,不删除 我只是在为一个程序创建一个输入表单,看来我已经陷入了这个问题的逻辑。,python,button,tkinter,callback,optionmenu,Python,Button,Tkinter,Callback,Optionmenu,基本上,我想设计一个dropdwon列表,将单词添加到数组中,并将这些单词显示为数组下方的小按钮。单击按钮时,它们将再次消失,并从阵列中删除它们自己。 很简单,我想。到目前为止,这项计划运作良好。但移除的不太多。。。按钮数组有一个逻辑错误,我似乎无法理解 我提取了代码以供审阅 非常感谢您的帮助 主要问题是,您不断重复创建相同的按钮,因此rel_按钮包含的元素比您预期的多得多 作为一个简单的实验,将打印语句添加到rel\u buttons\u update中,如下所示: def rel_butt

基本上,我想设计一个dropdwon列表,将单词添加到数组中,并将这些单词显示为数组下方的小按钮。单击按钮时,它们将再次消失,并从阵列中删除它们自己。 很简单,我想。到目前为止,这项计划运作良好。但移除的不太多。。。按钮数组有一个逻辑错误,我似乎无法理解

我提取了代码以供审阅

非常感谢您的帮助


主要问题是,您不断重复创建相同的按钮,因此
rel_按钮
包含的元素比您预期的多得多

作为一个简单的实验,将打印语句添加到
rel\u buttons\u update
中,如下所示:

def rel_buttons_update():
    for i, rel in enumerate(rel_array):
        rel_buttons.append(ttk.Button(rel_grid, text=rel, command=lambda c=i: del_button(c)))
        rel_buttons[i].grid(column=i, row=0, sticky="nw")
    print('in update, rel_buttons is now', rel_buttons)
您会注意到,第一次使用选项菜单时有一个按钮,第二次使用三个按钮,第三次使用六个按钮,依此类推


您只需要创建新按钮,或者在重新创建之前删除所有旧按钮

好的,谢谢你!但我的问题不是我不知道我必须删除按钮;问题是我不知道在哪里做。经过一些尝试,我想出了类似这样的东西:`def rel_buttons_update(arr):for rel in rel_buttons:rel.destroy()rel_buttons=[]`在update_函数中,但它越来越混乱!或者换句话说:问题是lambda命令没有引用创建它的特定按钮,因此del_按钮函数在大多数情况下不会删除任何内容。@fschober:是的,这是另一种方式。您在数组中使用索引,并且没有正确管理数组,因此索引引用的小部件与您认为的不同。
def rel_buttons_update():
    for i, rel in enumerate(rel_array):
        rel_buttons.append(ttk.Button(rel_grid, text=rel, command=lambda c=i: del_button(c)))
        rel_buttons[i].grid(column=i, row=0, sticky="nw")
    print('in update, rel_buttons is now', rel_buttons)