Получаем названия события — wxPython #19

Несколько лет назад я увидел пост на вебсайте StackOverflow, который показался мне интересным. Он содержал вопрос: как извлечь имя события из объекта события, такого как EVT_BUTTON, вместо порядкового номера события. Так что я провёл своё маленькое расследование и понял, что в wxPython отсутствуют встроенные инструменты для выполнения этой задачи. Робин Данн, создатель wxPython, посоветовал мне создать словарь событий и их id, чтобы сделать это. Так что, в данной статье, мы рассмотрим то, как реализовать данную возможность.

Есть вопросы по Python?

На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!

Telegram Чат & Канал

Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!

Паблик VK

Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!

Я пытался сделать это сам, но предварительно решил убедиться, что никто до меня ещё этого не сделал. После использования гугла, я нашёл форум, в одной из тем которого Робин Данн объяснял, как это сделать. Вот его суть:

Данный код работает только с главными событиями. Также существуют особенные события, расположенный в некоторых под-библиотеках в wx, такие как в wx.grid. Вам нужно принять это во внимание. И пока я ещё сам до конца с этим не разобрался, но я могу показать вам как добавить эти грид-события. Давайте взглянем!

Как вы могли заметить, мы значительно изменили луп. Мы взяли луп из первого примера и скомбинировали его с первым «IF»-утверждением, чтобы охватить весь список. Это возвращает список имён событий. Затем мы в циклу, используем другие условия, чтобы добавить всё в словарь. Мы сделали это дважды: один раз для обычных событий, и второй раз для событий wx.grid.

Затем мы биндим несколько событий, чтобы проверить наш список событий в wxPython . Если вы запускаете эту программу, вы увидите, что если было запущено хотя бы одно из связанных событий, то его имя будет напечатано в stdout. С тех пор как мы задали, что объект wx.App* является редиректом для stdout, wxPython откроет специальное окно, которое покажет, что будет распечатано. Увидеть, как это выглядит можно на картинке ниже:

Получаем названия события - wxPython #19

Итоги

Теперь вы знаете как получить имя события вместо обычного целого числа. Это может пригодится вовремя дебагинга, когда вы хотите привязать несколько событий к одному хэндлеру, и вам нужно проверить и увидеть какие именно события были запущены. Удачного кодинга!