1 回答

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超10個(gè)贊
from tkinter import *
from tkinter import ttk
v=Tk()
# I create two test combobox
for _ in range(2):
? ? combo = ttk.Combobox(values=['item1','item2','item3','item4'], state='readonly')
? ? combo.current(0)
? ? combo.pack()
# I create a test entry to test if the function correctly recognizes when it should be executed
entrada = Entry()
entrada.pack()
def function(Event):
? ? """
? ? If Event.widget is a str and ends with ".popdown.f.l" I consider it to be the Listbox,
? ? I get the path of the Combobox it belongs to and convert it to a widget.
? ? Afterwards, I set the value of Event.widget to that of the supposed combobox.
? ? """
? ? if(isinstance(Event.widget, str) and Event.widget.endswith(".popdown.f.l")):
? ? ? ? Event.widget = v._nametowidget(Event.widget[:-len(".popdown.f.l")])
? ? ? ??
? ? # If Event.widget is not a Combobox, it stops the execution of the function.
? ? if(not isinstance(Event.widget, ttk.Combobox)):
? ? ? ? return
? ? if(Event.char in '1234'):
? ? ? ? Event.widget.set(f'item{Event.char}')
v.bind_all('<Key>', function)
v.mainloop()
添加回答
舉報(bào)