Почему мой обработчик кликов ttk.Treeview возвращает неправильный элемент в Tree.focus()?Python

Программы на Python
Ответить
Anonymous
 Почему мой обработчик кликов ttk.Treeview возвращает неправильный элемент в Tree.focus()?

Сообщение Anonymous »

У меня есть простой сценарий, использующий экземпляр ttk.Treeview, который я заполняю содержимым дерева файловой системы. Я хочу выполнить определенную операцию при щелчке по элементам (листья), поэтому я настроил обработчик следующим образом:

Код: Выделить всё

self.tree.tag_bind('#entry', '', 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)

Подробнее здесь: https://stackoverflow.com/questions/120 ... tree-focus
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»