当前位置: 代码迷 >> python >> 如何使组合框绑定python中的不同方法
  详细解决方案

如何使组合框绑定python中的不同方法

热度:85   发布时间:2023-06-13 16:45:12.0

我想创建多个组合框,它们中的条目将触发不同的绑定事件。 例如:Combobox1 = {Mustang,Focus,Tesla},野马将具有运行method_mustang的绑定,focus将具有运行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()

创建一个简单的绑定,将值简单地映射到函数

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