我定义了GCanvas,它是Canvas的扩展.我的目的是在类级别绑定到GCanvas.它不起作用.
我也尝试绑定到tk.Canvas,它也不起作用.绑定到rootGCanvas实例或与GCanvas实例绑定工作正常.(这些替代方案对我来说都没有用,但我只是试着看看发生了什么.)运行OS X,El Capitan.
import Tkinter as tk
class GCanvas(tk.Canvas, object):
def __init__(self, master, **kwargs):
tk.Canvas.__init__(self, master, kwargs)
@staticmethod
def enter(e):
print "enter", e.widget, e.x, e.y
@staticmethod
def leave(e):
print "leave", e.widget
@staticmethod
def motion(e):
print "motion", e.widget, e.x, e.y
approach = "bindinstance"
root = tk.Tk()
gc = GCanvas(root, width=400, height=300)
print "root is", root, "gc is", gc
gc.pack()
if approach == "bindGCanvas":
print "binding to GCanvas"
root.bind_class(GCanvas, '<Enter>', GCanvas.enter)
root.bind_class(GCanvas, '<Leave>', GCanvas.leave)
#root.bind_class(GCanvas, '<Motion>', GCanvas.motion)
elif approach …Run Code Online (Sandbox Code Playgroud)