Сгенерированный 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.

Другие вопросы по тегам