我想创建多个组合框,其中包含将触发不同绑定事件的条目。例如: Combobox1 = {Mustang,Focus,Tesla},野马会有一个绑定来运行method_mustang,焦点会有一个绑定来运行method_focus等。所有将要创建的方法都会触发一个不同的事件
然后我希望能够为卡车编写一个新的组合框来做类似的事情。我可以使用列出的项目成功创建我的组合框,但我仍然坚持如何将不同的项目绑定到另一种方法。
请帮忙。
使用另一个问题中发布的代码:(不需要标签部分,但想提供一些参考)
import tkinter as tk
from tkinter import ttk
values = ['mustang', 'focus', 'tesla']
root = tk.Tk()
labels = dict((value, tk.Label(root, text=value)) for value in values)
def handler(event):
current = combobox.current()
if current != -1:
for label in labels.values():
label.config(relief='flat')
value = values[current]
label = labels[value]
label.config(relief='raised')
combobox = ttk.Combobox(root, values=values)
combobox.bind('<<ComboboxSelected>>', handler)
combobox.pack()
for value in labels:
labels[value].pack()
root.mainloop()
答案 0 :(得分:1)
创建一个简单地将值映射到函数
的绑定import tkinter as tk
from tkinter import ttk
values = ['mustang', 'focus', 'tesla']
def method_mustang():
label.configure(text="mustang selected")
def method_focus():
label.configure(text="focus selected")
def method_tesla():
label.configure(text="tesla selected")
def method_unknown():
label.configure(text="unknown selected")
def handler(event):
current = combobox.current()
value = values[current]
print("current:", current, "value:", value)
func_map = {
"mustang": method_mustang,
"focus": method_focus,
"tesla": method_tesla
}
func = func_map.get(value, method_unknown)
func()
root = tk.Tk()
combobox = ttk.Combobox(root, values=values)
combobox.bind('<<ComboboxSelected>>', handler)
label = ttk.Label(root, width=20)
combobox.pack(side="top", anchor="w")
label.pack(side="top", fill="x", pady=4)
root.mainloop()