Я относительно новичок в tkinter, и я пытаюсь создать программу, чтобы показать стоимость акций. Я прошу пользователя ввести символ акции, который добавляется к списку акций и отображает некоторую информацию о запасе в кадре tkinter. Внутри фрейма у меня есть кнопка «Удалить запас», которую я хочу одновременно удалить из списка запасов и уничтожить этот фрейм. Вот мой соответствующий код:
current_stocks = []
stock_frames = []
def update(): #Update the Currently Displayed Frames
print(stock_frames)
for stock in current_stocks:
list_index = current_stocks.index(stock)
stock_frame = LabelFrame(root, text=stock, padx=5, pady=5)
stock_frame.grid(row=list_index+1,column=0,columnspan=3)
if stock_frame not in stock_frames:
stock_frames.append(stock_frame)
stock_info_lbl = Label(stock_frame, text=f'{stock} Current Price')
stock_info_lbl.grid(row=0,column=0)
graph_stock_btn = Button(stock_frame, text="Graph", command=graph_stock)
graph_stock_btn.grid(row=0,column=1)
remove_stock_btn = Button(stock_frame, text="Remove", command=lambda list_index=list_index: remove_stock(list_index))
remove_stock_btn.grid(row=0,column=2)
def remove_stock(i): #Remove Stock From List and Destroy the Frame
current_stocks.pop(i)
stock_frames[i].destroy()
stock_frames.pop(i)
update()
Я передаю параметр индекса списка, чтобы удалить запас, потому что, насколько я могу видеть, позиция индекса current_stocks и stock_frames должна соответствовать одной и той же акции. Я пробовал использовать grid_forget () вместо destroy (), но это ничего не меняет. Я должен отметить, что пока у меня отображается только одна акция, я могу удалить ее совершенно нормально, однако, если я добавлю более одной акции, вещи начнут ломаться. Это заставляет меня думать, что ошибка как-то связана с этим:
if stock_frame not in stock_frames:
stock_frames.append(stock_frame)
Любая помощь будет принята с благодарностью, спасибо!