Как создать сетку с помощью XRC — wxPython #50

Давным-давно я пытался помочь одному из подписчиков почтовой рассылки wxPython разобраться в том, как использовать виджет сетки (wx.grid.Grid) через XRC. Это должно было быть проще простого, но когда вы запустите код, расположенный ниже, вы столкнётесь со странной проблемой:

Вы заметите, что после запуска на экране появится “wx._windows.ScrolledWindow” а не объект Grid. Таким образом, Python 2 выдаст вас следующий трейсбек:

Трейсбек в Python 3 довольно схож, поэтому я не буду копировать и его. Вместо этого, мы взглянем на XRC-файл, который мы пытались загрузить в прошлом примере.

Как вы видите, вы должны были бы получить wxGrid обратно. Каково решение? Вам нужно импортировать wx.grid! Почитайте вот этот фрагмент темы, чтобы узнать больше. Согласно словам Робина Дана, создателя wxPython, вот почему вам нужно это сделать:

«Вам нужно импортировать wx.grid в ваш код в Python. Когда вы делаете это, некоторые внутренние обновляются посредством типа информации для классов сетки, и эта информация используется когда нужно выяснить, как конвертировать С++  поинтер в объект Python, причём последний должен иметь тип, подходящий возврата значения формата XRCCTRL

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

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

Telegram Чат & Канал

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

Паблик VK

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

Обновлённый код выглядит так:

Когда вы запустите этот код, вы увидите следующее:

Как создать сетку с помощью XRC - wxPython #50

Так что, если вы столкнётесь со странной проблемой, описанной выше, вы будете знать, как с ней справиться.

Итоги

Создание видежтов XRC может быть достаточно сложным, но это действительно ценный опыт, а именно знания, позволяющие отделить вашу logic от вашего пользовательского интерфейса. В этой статье, мы научились как разобраться с достаточно прямолинейной проблемой. Как вы могли узнать из прошлой статьи, добавление контроля, который ещё не является частью XRC уже немного сложнее.