gpt4 book ai didi

python - 使用 "ComboboxSelected"的一个函数来读取多个组合框

转载 作者:行者123 更新时间:2023-11-30 22:44:47 25 4
gpt4 key购买 nike

我正在尝试对多个组合框使用相同的选择事件;是否可以?我找不到传递给函数(事件的发送者)的方法。

    def newselection(self, event, {????}):
self.selection = self.{????}.get()
print(self.selection)

self.combo1 = Combobox(self, width=7)
self.combo1.bind("<<ComboboxSelected>>", self.newselection({????}))
self.combo1['values'] = ('a', 'c', 'g', 't')
self.combo1.place(x=250, y=400)
self.combo1.state(['readonly'])

self.combo2 = Combobox(self, width=7)
self.combo2.bind("<<ComboboxSelected>>", self.newselection({????}))
self.combo2['values'] = ('X', 'Y', 'XX', 'XY')
self.combo2.place(x=450, y=400)
self.combo2.state(['readonly'])

因此,选择什么组合并不重要,我可以使用相同的函数并读取发送者,以便我可以正确分配组合框的值。

最佳答案

bind 需要函数名称 - 这意味着没有 () 和参数。但它使用 event 执行此函数,从而可以访问小部件 - event.widget

工作示例:

import tkinter as tk
from tkinter import ttk

# --- functions ---

def newselection(event):
print('selected:', event.widget.get())

# --- main ---

root = tk.Tk()

cb1 = ttk.Combobox(root, values=('a', 'c', 'g', 't'))
cb1.pack()
cb1.bind("<<ComboboxSelected>>", newselection)

cb2 = ttk.Combobox(root, values=('X', 'Y', 'XX', 'XY'))
cb2.pack()
cb2.bind("<<ComboboxSelected>>", newselection)

root.mainloop()

如果您需要更多参数,则必须使用lambda

import tkinter as tk
from tkinter import ttk

# --- functions ---

def newselection(event, other):
print('selected:', event.widget.get())
print('other:', other)

# --- main ---

root = tk.Tk()

cb1 = ttk.Combobox(root, values=('a', 'c', 'g', 't'))
cb1.pack()
cb1.bind("<<ComboboxSelected>>", lambda event:newselection(event, "Hello"))

cb2 = ttk.Combobox(root, values=('X', 'Y', 'XX', 'XY'))
cb2.pack()
cb2.bind("<<ComboboxSelected>>", lambda event:newselection(event, "World"))

root.mainloop()

关于python - 使用 "ComboboxSelected"的一个函数来读取多个组合框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41406408/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com