问题不在于事件<>,但bind函数需要回调作为第二个参数。
当你这样做:
cbox.bind("<>", print("Selected!"))
你基本上将该呼叫分配给print("Selected!")回调的结果。
要解决您的问题,您可以简单地分配一个函数对象,以便在事件发生时进行调用(选项1,这是最佳选择)或使用lambda函数(选项2)。
这里的选项1:
import tkinter as tk
from tkinter import ttk
tkwindow = tk.Tk()
cbox = ttk.Combobox(tkwindow, values=[1,2,3], state='readonly')
cbox.grid(column=0, row=0)
def callback(eventObject):
print(eventObject)
cbox.bind("<>", callback)
tkwindow.mainloop()
注意在callback后没有():cbox.bind("<>", callback)。
这里的选项2:
import tkinter as tk
from tkinter import ttk
tkwindow = tk.Tk()
cbox = ttk.Combobox(tkwindow, values=[1,2,3], state='readonly')
cbox.grid(column=0, row=0)
cbox.bind("<>", lambda _ : print("Selected!"))
tkwindow.mainloop()
检查什么是lambda函数,以及如何使用它们!
检查这篇文章,以了解更多有关事件和绑定: