我正在使用Python 3.5中的Tkinter,并遇到一个奇怪的问题。
我使用 tkinterbook关于事件和绑定来编写这个简单的示例:
我使用 tkinterbook关于事件和绑定来编写这个简单的示例:
from tkinter import *
root = Tk()
frame = Frame(root, width=100, height=100)
def callback(event):
print("clicked at", event.x, event.y)
# frame.unbind("<Button-1>", callback)
frame.bind("<Button-1>", callback)
frame.pack()
root.mainloop()
它可以正常工作,但是如果我尝试解除回调绑定(只需取消注释该行),它会出现以下错误:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\Delgan\AppData\Local\Programs\Python\Python35\lib\tkinter\__init__.py", line 1549, in __call__
return self.func(*args)
File "C:\Users\Delgan\Desktop\Test\test.py", line 9, in callback
frame.unbind("<Button-1>", callback)
File "C:\Users\Delgan\AppData\Local\Programs\Python\Python35\lib\tkinter\__init__.py", line 1105, in unbind
self.deletecommand(funcid)
File "C:\Users\Delgan\AppData\Local\Programs\Python\Python35\lib\tkinter\__init__.py", line 441, in deletecommand
self.tk.deletecommand(name)
TypeError: deletecommand() argument must be str, not function
这不是很清楚,我不确定这是tkinter中的一个错误还是我做错了什么。
frame.unbind("<Button-1>")
可以正常工作,但我想删除这个特定的回调函数而不是全局删除。