У меня есть простой сценарий, использующий экземпляр 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. Экземпляр этого класса хранится в 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:
.
Что мне не хватает?