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

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

-. 121 ---1671919- MKAnnotation и setCoordinate: У меня есть собственный класс, соответствующий протоколу MKAnnotation. Экземпляр этого класса хранится в viewController вместе с объектом типа MKMapView, называемым _mapView. Я установил...

У меня есть собственный класс, соответствующий протоколу MKAnnotation. Экземпляр этого класса хранится в viewController вместе с объектом типа MKMapView, называемым _mapView. Я установил viewController как _делегата mapView. В пользовательском интерфейсе класса я объявил:

@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;

как это требуется в соответствии с протоколом MKAnnotation. Я также @synthesizeиспользовал его в реализации того же класса.Однако, когда я отправляю следующее сообщение из viewController:

[_mapView addAnnotation:myCustomClass];

Я получаю сообщение об ошибке:

<NSInvalidArgumentException> -[myCustomClass setCoordinate:]: unrecognized selector sent to instance 0x1479e0

Если я зайду в файл реализации своего пользовательского класса и определю

- (void) setCoordinate:(CLLocationCoordinate2D)newCoordinate
{
    coordinate = newCoordinate;
}

то аннотация будет успешно добавлена ​​на карту.

Разве @synthesize coordinate;не должен позаботиться о методе setCoordinate:? Кажется странным, что мне нужно как @synthesizeкоординату, так и написать метод (void) setCoordinate:.

Что мне не хватает?

7
задан Nick 19 August 2012 в 02:32
поделиться