Tkinter实现当选择一个不同下拉框(Combobox,OptionMenu都可)的值时修改另一个下拉框的值

这个国内依旧没有教程。本人之前也以为无法实现,查阅各种资料找到了方法。

实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import tkinter
from tkinter import ttk

def change(*args):
global list
if (mode.get() == "A"):
list2.config(values=["you choose A"])
list2.current(0)
else:
list2["value"]=["you choose B","you choose B yes!"]
list2.current(0)

win = tkinter.Tk()
mode = tkinter.StringVar()
langlist = tkinter.StringVar()
list1 = ttk.Combobox(win,textvariable=mode,state="readonly", width=10)
list1.bind("<<ComboboxSelected>>",change)
list1['value'] = ("A","B")
list1.current(0)
list2 = ttk.Combobox(win,textvariable=langlist, state="readonly", width=50)
list2.config(values=["you choose A"])
list2.current(0)
list1.pack()
list2.pack()

win.mainloop()

思路:
由于Combobox没有command参数,所以不能按照RadioButton那样直接修改,这里使用了bind绑定事件,绑定ComboboxSelected事件,即当修改Combobox的值时执行函数,再用函数对第二个下拉菜单Combobox进行修改。

注:我在函数的if,else里面用了2种方法修改了list2的方法,2种都是可行的!

觉得好就点个赞吧~~~