Найти - Пользователи
Полная версия: wxPython: вызвать событие принудительно
Начало » GUI » wxPython: вызвать событие принудительно
1
ostroglaz
Доброго времени суток всем!

Ситуация такая: 1. имеется wxTreeCtrl, на нём пара item… имеется событие клика на итем правой кнопкой мыши(wx.EVT_TREE_ITEM_RIGHT_CLICK)… мне от этого события нужен item id…
2. также имеется событие wx.EVT_RIGHT_DOWN - мышиный евент, отсюда мне нужна позиция мышки в момент клика…
оба события сразу не срабатывают :(

отсюда вывод: либо насильно вызвать эвент в процедуре, связанной с другим, либо взять позицию как-нить иначе :) но иначе не выходит… пробовал через класс wx.MouseState и через pyGame… координаты не берёт - всё по нулям :(

Подскажите, плиз, как это задачу разрешить :)
pyuser
Если функция OnRightDown(self, event) привязана к событию EVT_TREE_ITEM_RIGHT_CLICK, то получить позицию мышки можно так: event.GetPosition()
Зная позицию мышки получить объект, флаги, колонку можно с помощью функции HitTest (это функция wxTreeCtrl)

ЗЫ. Смотрите примеры wxPython - там ответы практически на все вопросы
ostroglaz
Да я смотрел :) именно оттуда осознал работу с id…
но такой забавный костылёк, как HitTest упустил, это да…

Спасибо, pyuser, за оперативный ответ… не ожидал такой скорости :) буду рефракторить код)

Но всё ж про принудительный вызов события хотелось бы узнать более.. сейчас смотрю реф по wxWidgets, но в тех доке на инглише слабоват…
pyuser
Есть функция PostEvent :)
Почитай что-нибудь о написании тестов для GUI, без генерации событий при тестировании не обойтись

ЗЫ. Где-то на этом форуме лежит частичный перевод книги wxPython In Action, почитай - все очень доходчиво
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB