【问题标题】:Function for tag_bind runs when defining ittag_bind 的函数在定义时运行
【发布时间】:2015-11-22 09:39:13
【问题描述】:

我对 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!" 

例如... 看不出是什么问题。我已经用列表框做过类似的事情,而且效果很好。 提前感谢您的帮助!

【问题讨论】:

  • 使用函数名 - 不带()

标签: python tkinter treeview mouseevent


【解决方案1】:

您需要传递可调用对象本身,而不是调用它的结果。

self.tree.tag_bind(childID, '<Double-1>', jclass.tree_func)

【讨论】:

    【解决方案2】:

    我实际上终于让它运行了,但这不仅仅是因为 () 它不起作用。忘了说我都试过了。诀窍是我通过编写将标签赋予树对象:

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

    而不仅仅是

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

    【讨论】:

      猜你喜欢
      • 2011-06-24
      • 2021-04-15
      • 1970-01-01
      • 2021-01-21
      • 1970-01-01
      • 1970-01-01
      • 2017-11-14
      • 2015-07-06
      • 2011-10-22
      相关资源
      最近更新 更多