流程如下:
1.构造列表之间的映射关系
2.定义对第一个列表产生触发事件后,第二个列表得到的结果
3.绑定事件
下面是简单的月份对日期的联动效果(不考虑闰年),可以参考
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.title("test")
#构造月份对日期列表的映射
days31 = list(range(1,32))
days30 = list(range(1,31))
days28 = list(range(1,29))
month_dict = {"1":days31,"2":days28,"3":days31,"4":days30,"5":days31,"6":days30,"7":days31,"8":days31,"9":days30,"10":days31,"11":days30,"12":days31}
month_keys = list(month_dict.keys())
#构造两个combobox
month = tk.StringVar()
monthbox = ttk.Combobox(root,width = 5,textvariable = month,state = "readonly")
monthbox["values"] = month_keys
monthbox.grid(row = 0,column = 0)
monthbox.current(0)
tk.Label(root,text = "月").grid(row = 0,column = 1)
day = tk.StringVar()
daybox = ttk.Combobox(root,width = 5,textvariable = day,state = "readonly")
daybox["values"] = month_dict[month.get()]
daybox.grid(row = 0,column = 2)
daybox.current(0)
tk.Label(root,text = "日").grid(row = 0,column = 3)
#触发事件
def mFunc(event):
day_list = month_dict[month.get()]
daybox["values"] = day_list
#绑定事件
monthbox.bind("<<ComboboxSelected>>",mFunc)
root.mainloop()