正好自己要用,就想了个简单思路实现了一下,假设现在需要一个组合框来显示多个层级关系的单位名称供用户选择,如果只有固定的两级关系当然可以使用两个组合框联动来实现,但是如果层级关系不确定,下面的方法就很有用了。
import tkinter
import tkinter.ttk
testData = {'01':'学校一',
'02':'学校二',
'03':'学校三',
'0101':'学校一年级一',
'010101':'学校一年级一班级一',
'0102':'学校一年级二'}
#按单位编码进行排序
data = sorted(testData.items(), key=lambda x: x[0])
#编码越长,表示单位名称越小,嵌套关系越深
#编码长的单位名称前面加的空格也多
data = [(len(item[0])-2)*2*' '+item[1] for item in data]
root = tkinter.Tk()
root.title('NestedRelation_Combobox')
root['height'] = 200
root['width'] = 320
comboSchool = tkinter.ttk.Combobox(root, values = data, width=160)
comboSchool.place(x=10, y=10, width=160, height=20)
root.mainloop()
运行效果如下图所示: