【发布时间】:2020-03-30 12:53:10
【问题描述】:
我正在为一个程序创建一个输入表单,似乎我已经被这个逻辑卡住了。
基本上我想设计一个 dropdwon-list,它将单词添加到一个数组中,并将这些单词显示为它下面的小按钮。当您单击按钮时,它们会再次消失并从阵列中移除。 很简单,我想。到目前为止,添加工作正常。但是删除的并不多……按钮数组存在逻辑错误,我似乎无法弄清楚!
我提取了代码进行审查,
非常感谢任何帮助!
import tkinter as tk
from tkinter import ttk
def rel_add(*args):
rel_array.append(tkvar.get())
print(rel_array)
rel_buttons_update()
def del_button(i):
print(i)
del rel_array[i]
print(rel_array)
rel_buttons[i].grid_remove()
# del rel_buttons[i]
rel_buttons_update()
def rel_buttons_update():
for i, rel in enumerate(rel_array):
rel_buttons.append(tk.Button(rel_grid, text=rel, font="Helvetica 7", command=lambda c=i: del_button(c)))
rel_buttons[i].grid(column=i, row=0, sticky="nw")
rel_array = []
rel_buttons = []
win = tk.Tk()
tkvar = tk.StringVar(win) # Create a Tkinter variable
choices_words = ["oolbath", "pflanze", "haus", "wasser", "brimbambum"] # Create Variable List
tkvar.set('Related Words...') # set the default option
choices_words.sort() # Sort List
tk.Label(win, text="Related Words: ").grid(row=0,column=0, sticky="w")
rel = tk.OptionMenu(win, tkvar, *choices_words)
rel.grid(row=0,column=1, sticky="w")
# Callbuck Function for Dropdwon Menu
tkvar.trace("w", rel_add)
rel_grid = tk.Frame(win)
# Display the Buttons for the related Words
rel_grid.grid(row=1,column=1, sticky="w")
win.mainloop()
【问题讨论】:
标签: python button tkinter callback optionmenu