Я делаю виджет с тройным списком с помощью Python tkinter.
Сначала у меня есть такой диктат:
testDict = {'animal': {'mammal': ['mouse', 'cat'], 'reptile': ['lizard', 'snake']}, 'food': {'meat': ['bacon', 'lamb', 'beef'], 'fruit': ['apple', 'pear', 'banana', 'kiwi']}}
Теперь я хочу иметь возможность: Шаг1,добавьте «животное» и «еду» в качестве темы в первый список, нажав кнопку «Добавить тему».Выберите ключ в первом списке, затем нажмите «Добавить тип», чтобы добавить во второй список соответствующие типы, например «фрукты» и «мясо» или «млекопитающие» и «рептилия».
Шаг 3.Выберите тип из второго списка и добавьте соответствующие элементы в третий список, например: «ящерица», «змея» или «яблоко», «груша», «банан», «киви» и т. Д.
Я застрял на шаге 3.
Мой код:
import tkinter as tk
from tkinter import *
from tkinter import ttk
root = Tk()
testDict = {'animal': {'mammal': ['mouse', 'cat'], 'reptile': ['lizard', 'snake']}, 'food': {'meat': ['bacon', 'lamb', 'beef'], 'fruit': ['apple', 'pear', 'banana', 'kiwi']}}
Box1 = tk.Listbox(height=8, width=50, borderwidth=2)
Box1.pack()
Box2 = tk.Listbox(height=8, width=50, borderwidth=2)
Box2.pack()
Box3 = tk.Listbox(height=8, width=50, borderwidth=2)
Box3.pack()
def addTheme():
Box1.delete(0, END)
for themeName in testDict:
Box1.insert(END, themeName)
def addType():
getKey = str((Box1.get(ACTIVE)))
Box1.get(ANCHOR)
Box2.delete(0, END)
for itemType in testDict[getKey]:
Box2.insert(END, itemType)
#---------------------This is where the problem is ----------------------
def addName():
getKey2 = str((Box2.get(ACTIVE)))
Box2.get(ANCHOR)
Box3.delete(0, END)
for itemName2 in testDict[getKey2]:
Box3.insert(END, itemName2)
themeButton = tk.Button( text = "Add Theme", command= lambda: addTheme())
themeButton.pack(side=TOP)
typeButton = tk.Button(text = "Add Type", command= lambda: addType())
typeButton.pack(side=TOP)
nameButton = tk.Button(text = "Add Name", command= lambda: addName())
nameButton.pack(side=TOP)
root.mainloop()
Можете ли вы помочь мне исправить кнопку addName, чтобы она работала?Любая помощь будет оценена.
Заранее спасибо!