У меня есть простой скрипт, использующий экземпляр 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 по умолчанию).