我正在尝试继承 gtk.DrawingArea。这是代码的问题部分。
class ClusterGraph(gtk.DrawingArea):
def __init__(self):
super(ClusterGraph, self).__init__()
self.add_events(gtk.gdk.BUTTON_PRESS_MASK)
self.connect('button-press-event', self.on_mouse_dn)
def on_mouse_dn(*args):
print args
window = gtk.Window()
window.connect("destroy", gtk.main_quit)
window.set_default_size(300, 600)
cg = ClusterGraph()
window.add(cg)
window.show_all()
gtk.main()
问题是实例被传递给该方法两次。
点击它打印:
(<ClusterGraph object at 0x30167d8 (GtkDrawingArea at 0x2531610)>, <ClusterGraph object at 0x30167d8 (GtkDrawingArea at 0x2531610)>, <gtk.gdk.Event at 02F75F08: GDK_BUTTON_PRESS x=164,00, y=354,00, button=1>)
我的回调实际上相当于
def on_mouse_dn(self, self, event)
如何解决这个问题呢?还是正常的!?
顺便说一句,为什么打印
<ClusterGraph object at 0x30167d8 (GtkDrawingArea at 0x2531610)>
而不是像
<ClusterGraph object at 0x30167d8 (ClusterGraph at 0x2531610)>
编辑:问题是如何删除额外的参数。