2017-02-13 19 views
0

我想要創建多個組合框,其中有條目會觸發不同的綁定事件。例如: Combobox1 = {Mustang,Focus,Tesla},野馬會綁定運行method_mustang,焦點會綁定運行method_focus等。所有將要創建的方法都將觸發不同的事件如何使python中綁定不同方法的combobox

然後,我希望能夠爲卡車做一個新的組合框,它可以做類似的事情。我可以用列出的項目成功創建我的組合框,但我堅持如何將不同的項目綁定到另一個方法。

請幫忙。

使用代碼張貼在另一個問題:(不需要標籤部分,但想給的東西作爲參考)

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() 

回答

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() 
+0

謝謝!正是我需要的方向。 – bob