tag_bind的函数在定义时运行

时间:2015-11-22 09:39:13

标签: python tkinter treeview mouseevent

我对python和编程很新,但我只是设法使用我认为雄心勃勃的for循环创建树视图。这个想法是列表中的每个项目代表一个带有一个方法的类,该方法应该在单击项目时生成。现在的事情是,这个函数在创建树时往往会运行,但是当点击该项时没有任何反应。

代码:

for i in range(0,len(iclass.OPS)):

    jclass = iclass.OPS[i]
    childID = "%s-%s" % (parentID, child_count)
    self.tree.insert(parentID, 'end', childID, text = jclass.treeID)
    self.tree.tag_bind(childID, '<Double-1>', jclass.tree_func() )
    self.populate_tree(childID, jclass)
    child_count += 1

有问题的tree_func是在实际类中定义的:

def tree_func(self, event):
    print "hi!" 

例如...... 看不出是什么问题。我已经用列表框做了类似的事情并且有效。 在此先感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

你需要传递callable本身,而不是调用它的结果。

awsm.json

答案 1 :(得分:1)

我实际上最终让它运行了,但这并不仅仅因为()它没有起作用。忘记提到我试过两个。诀窍在于我通过写:

将标签提供给我的树对象
self.tree.insert(parentID, 'end', tags = childID, text = jclass.treeID)

而不仅仅是

self.tree.insert(parentID, 'end', childID, text = jclass.treeID)