Сгенерированный Python код wxformbuilder генерирует NameError
Не уверен, что фон имеет значение, но я буду включать его в случае
Я перехожу из wxglade, поэтому я сгенерировал XRC из wxglade и импортировал в wxformbuilder
У меня есть сетка, которую я подкласс для добавления некоторых функций, в wxformbuilder она показывает сетку правильно и правильность подкласса также правильно (mygrid.MyGrid)
но сгенерированный код, конечно, не импортирует mygrid так, как должен, поэтому при запуске он выдает:
NameError: global name 'mygrid' is not defined
это ошибка или я что-то не так делаю? какие-нибудь обходные пути?
2 ответа
Хорошо, нашел уродливый обходной путь, который, кажется, работает
в основном я вручную добавляю ссылку на модуль global dictionay:
в примере код генерируется в файле gui.py, а мой класс находится внутри файла mygrid.py
import mygrid
import gui
import sys
setattr(sys.modules["gui"], "mygrid", mygrid)
Ваш обходной путь помог мне в течение нескольких месяцев.
До сегодняшнего дня, когда я наконец проигнорировал header
справка по полю, в которой указывается только для C++, и указывается там имя модуля, где у меня есть мой подкласс. Теперь сгенерированный класс правильно импортирует мое определение подкласса.
header
поле находится прямо под subclass
поле в графическом интерфейсе wxFormBuilder. Если вы предпочитаете редактировать проект wxFormBuilder вручную, замените <property name="subclass">mygrid; </property>
с <property name="subclass">mygrid; mygrid</property>
, После регенерации у вас будет from mygrid import mygrid
строка в gui.py.