ostroglaz
Янв. 25, 2010 02:08:18
Доброго времени суток всем!
Ситуация такая: 1. имеется wxTreeCtrl, на нём пара item… имеется событие клика на итем правой кнопкой мыши(wx.EVT_TREE_ITEM_RIGHT_CLICK)… мне от этого события нужен item id…
2. также имеется событие wx.EVT_RIGHT_DOWN - мышиный евент, отсюда мне нужна позиция мышки в момент клика…
оба события сразу не срабатывают :(
отсюда вывод: либо насильно вызвать эвент в процедуре, связанной с другим, либо взять позицию как-нить иначе :) но иначе не выходит… пробовал через класс wx.MouseState и через pyGame… координаты не берёт - всё по нулям :(
Подскажите, плиз, как это задачу разрешить :)
pyuser
Янв. 25, 2010 02:25:44
Если функция OnRightDown(self, event) привязана к событию EVT_TREE_ITEM_RIGHT_CLICK, то получить позицию мышки можно так: event.GetPosition()
Зная позицию мышки получить объект, флаги, колонку можно с помощью функции HitTest (это функция wxTreeCtrl)
ЗЫ. Смотрите примеры wxPython - там ответы практически на все вопросы
ostroglaz
Янв. 25, 2010 02:41:10
Да я смотрел :) именно оттуда осознал работу с id…
но такой забавный костылёк, как HitTest упустил, это да…
Спасибо, pyuser, за оперативный ответ… не ожидал такой скорости :) буду рефракторить код)
Но всё ж про принудительный вызов события хотелось бы узнать более.. сейчас смотрю реф по wxWidgets, но в тех доке на инглише слабоват…
pyuser
Янв. 25, 2010 03:12:54
Есть функция PostEvent :)
Почитай что-нибудь о написании тестов для GUI, без генерации событий при тестировании не обойтись
ЗЫ. Где-то на этом форуме лежит частичный перевод книги wxPython In Action, почитай - все очень доходчиво