Получить значение словаря после выбора значения в выпадающем списке
Я создал словарь для значения моего списка. Я пытаюсь использовать .get(keys)
чтобы получить значение, которое я установил для комбинированного списка. Например, если я выберу A, он должен распечатать Haha What
, B должен распечатать Lala Sorry
оба они являются значениями в моем словаре, так как я могу исправить свой код?
from tkinter import *
from tkinter import ttk
class Application:
def __init__(self, parent):
self.parent = parent
self.value_of_combo='A'
self.combo()
def textArea(self, e):
self.value_of_combo = self.box.get()
# Get the content of the Text widget
r=self.thistextArea.get('1.0','1.end')
# If it is empty then insert the selected value directly
if not r:
self.thistextArea.insert(INSERT, self.box_values)
# If not empty then delete existing text and insert the selected value
else:
self.thistextArea.delete('1.0','1.end')
self.thistextArea.insert(END, self.box_values)
def combo(self):
self.box_value = StringVar()
mydict={'A':'Haha What','B':'Lala Sorry','C':'Ohoh OMG'}
self.box_values=mydict.keys()
self.box = ttk.Combobox(self.parent, textvariable=self.box_value,values= mydict,state='readonly')
self.box.bind('<<ComboboxSelected>>',self.textArea)
self.box.current(0)
self.box.grid(column=0, row=0)
self.thistextArea=Text(self.parent,height=50,width=50)
self.thistextArea.grid(column=0,row=1)
root = Tk()
app = Application(root)
root.mainloop()
1 ответ
Для отображения только клавиш (A
, B
а также C
) в виджете Combobox, вам нужно изменить self.box_values=mydict.keys(
) чтобы self.box_values=list(self.mydict.keys())
и эта строка:
self.box = ttk.Combobox(self.parent, textvariable=self.box_value,values= mydict,state='readonly')
к (передача списка ключей к values
вариант вместо словаря mydict
сам):
self.box = ttk.Combobox(self.parent, textvariable=self.box_value,values= self.box_values,state='readonly')
Как только это будет сделано, в textArea()
вам нужно будет использовать get()
метод для получения значения соответствующего выбранного ключа, который вы выбираете из виджета Combobo.
Программа:
Вот реализация сценария выше:
from tkinter import *
from tkinter import ttk
class Application:
def __init__(self, parent):
self.parent = parent
self.value_of_combo='A'
self.combo()
def textArea(self, e):
self.value_of_combo = self.box.get()
# Get the content of the Text widget
#print(self.mydict.get(self.value_of_combo))
r=self.thistextArea.get('1.0','1.end')
# If it is empty then insert the selected value directly
if not r:
self.thistextArea.insert(INSERT, self.mydict.get(self.value_of_combo))
# If not empty then delete existing text and insert the selected value
else:
self.thistextArea.delete('1.0','1.end')
self.thistextArea.insert(END, self.mydict.get(self.value_of_combo))
def combo(self):
self.box_value = StringVar()
self.mydict={'A':'Haha What','B':'Lala Sorry','C':'Ohoh OMG'}
self.box_values=list(self.mydict.keys())
#print(self.box_values)
self.box = ttk.Combobox(self.parent, textvariable=self.box_value,values= self.box_values,state='readonly')
self.box.bind('<<ComboboxSelected>>',self.textArea)
self.box.current(0)
self.box.grid(column=0, row=0)
self.thistextArea=Text(self.parent,height=50,width=50)
self.thistextArea.grid(column=0,row=1)
root = Tk()
app = Application(root)
root.mainloop()