多个 Tkinter 组合框,其中显示的值取决于用户在其他框中的选择

Multiple Tkinter Comboboxes where the displayed values depend on the user-choice in the other boxes

假设我得到了以下字典:

dict = {'A': [1,2,3], 'B': [4,5,6]}

有了这个字典和两个组合框,用户可能会得到一个特定的组合,例如A-1.问题是像A-5或B-1这样的选项不应该可以选择。

于是想到了下面的实现方式。如果用户在第一个框中选择 'A',则第二个框中的选项必须为 1,2 和 3。如果他选择 'B',则显示的选项为 4、5 和 6。 用户可以通过按下最后的按钮来确认他的组合 (A-1,...)。

一个小例子就是我的意思。

提前致谢!

所以这是我建议的代码:

from tkinter import Tk, Button, Frame, StringVar
from tkinter.ttk import Combobox


options = {'A': [1, 2, 3], 'B': [4, 5, 6]}


def get_var_1(event):
    value = cb1_var.get()
    cb2_var.set(options[value][0])
    cb2.config(values=options[value])


def get_info():
    print(cb1_var.get(), cb2_var.get())


root = Tk()

cb_frame = Frame(root)
cb_frame.pack(side='left')

cb1_values = list(options.keys())

cb1_var = StringVar()
cb1_var.set(cb1_values[0])
cb1 = Combobox(cb_frame, values=list(options.keys()), textvariable=cb1_var)
cb1.pack(side='top')
cb1.bind('<<ComboboxSelected>>', get_var_1)


cb2_var = StringVar()
cb2_var.set(options[cb1_values[0]][0])
cb2 = Combobox(cb_frame, values=options[cb1_values[0]], textvariable=cb2_var)
cb2.pack(side='bottom')


btn_frame = Frame(root)
btn_frame.pack(side='right')
Button(btn_frame, text='Confirm', command=get_info).pack()


root.mainloop()

基本上应该能看懂,有问题再问