Как создать сетку с помощью 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

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

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

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

Итоги

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

Вам может быть интересно

Scroll Up