【发布时间】:2012-08-14 23:03:05
【问题描述】:
我有一个使用ttk.Treeview 实例的简单脚本,我正在用文件系统树的内容填充该脚本。我想在单击(叶)项目时执行某个操作,所以我配置了一个处理程序,如下所示:
self.tree.tag_bind('#entry', '<1>', self.onClick)
在 onClick 方法中,我只是打印出被点击的项目,如下所示:
def onClick(self, event):
item_id = str(self.tree.focus())
print 'Selected item was %s' % item_id
item = self.tree.item(item_id)
flag = '#another_tag' in item['tags']
print ' flag = %s' % flag
我发现消息比点击次数滞后一倍。所以我的第一次点击会得到一个随机值(看起来像树的根),然后第 n 次点击会打印出被点击的第 (n-1) 个项目的值。
它们是这样插入的:
tree.insert(parent_id, 'end', id, text=id, tags=['#entry'])
有人知道这是 Tkinter 中的错误还是我做错了什么?
这似乎是 Ubuntu Natty 和 OS X Lion 上的一个问题(使用 Python 和 Tkinter 的默认预安装版本)
【问题讨论】:
标签: python treeview onclick tkinter ttk