我在Tkinter Python中遇到过combobox更新的问题。
我有两个组合框:
A
与values =['A','B','C']
和B
我想要的是:
在组合框A
中选择值A
后,在组合框B
中显示值['1','2','3']
在组合框B
中选择值A
后,在组合框B
中显示值['11','12','13']
在组合框C
中选择了值A
后,在组合框B
中显示值s ['111','112','113']
目前我的代码的一部分如下:
def CallHotel(*args):
global ListB
if hotel.get()==ListA[0]
ListB=ListB1
if hotel.get()==ListA[1]
ListB=ListB2
if hotel.get()==ListA[2]
ListB=ListB3
ListA=['A','B','C']
ListB1=['1','2','3']
ListB2=['11','12','13']
ListB3=['111','112','113']
ListB=ListB1
hotel = StringVar()
hotel.set('SBT')
comboboxA=ttk.Combobox(win0,textvariable=hotel,values=ListA,width=8)
comboboxA.bind("<<ComboboxSelected>>",CallHotel)
comboboxA.pack(side='left')
stp = StringVar()
stp.set('STP')
comboboxB=ttk.Combobox(win0,textvariable=stp,values=ListB,width=15)
comboboxB.pack(side='left')
答案 0 :(得分:2)
实际上,您不需要全局变量ListB
。您需要在comboboxB.config(values=...)
末尾添加CallHotel()
以设置comboboxB
的选项:
def CallHotel(*args):
sel = hotel.get()
if sel == ListA[0]:
ListB = ListB1
elif sel == ListA[1]:
ListB = ListB2
elif sel == ListA[2]:
ListB = ListB3
comboboxB.config(values=ListB)
直接将comboboxB
的初始值更改为ListB1
:
comboboxB=ttk.Combobox(win0,textvariable=stp,values=ListB1,width=15)