Obtain the value of a dictionary after select on of the combobox value
To display only the keys (A
, B
and C
) in the Combobox widget, you need change self.box_values=mydict.keys(
) to self.box_values=list(self.mydict.keys())
and this line:
self.box = ttk.Combobox(self.parent, textvariable=self.box_value,values= mydict,state='readonly')
to (passing the list of keys to values
option instead of the dictionary mydict
itself):
self.box = ttk.Combobox(self.parent, textvariable=self.box_value,values= self.box_values,state='readonly')
Once this done, in textArea()
you will need to use get()
method to retrieve the value of the correspondent chosen key you select from the Combobo wiget.
Program:
Here is the implementation of the scenario above:
from tkinter import *from tkinter import ttkclass 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()