2011-12-22 3 views
1

Не уверен, что если фон имеет значения, но я включу его в неожиданностяхwxformbuilder питон сгенерированного код бросает NameError

я двигаюсь от wxglade, поэтому я вызвал XRC из wxglade и импортирован в wxformbuilder

у меня есть сетки, которые я подкласс добавить некоторые функции, в wxformbuilder он показывает сетку правильно и подкласс уместность также правильно (mygrid.MyGrid)

но сгенерированный код, конечно, не импортирует mygrid как это должен, поэтому при работе он бросает:

NameError: global name 'mygrid' is not defined 

это ошибка, или я что-то не так? любые обходные пути?

ответ

1

нормально, нашел уродливые обходной путь, который, кажется, работает

в основном я вручную добавить ссылку на модуль глобального dictionay:
в примере код генерируется в файле gui.py и мой класс находится внутри файл mygrid.py

import mygrid 
import gui 
import sys 
setattr(sys.modules["gui"], "mygrid", mygrid) 
2

Ваш обходной путь помог мне в течение нескольких месяцев.

До сегодняшнего дня, когда я, наконец, игнорировал header поле помощи, в которой говорится для C++ только и указанной там имя модуля, где у меня есть свой подкласс. Теперь сгенерированный класс правильно импортирует определение моего подкласса.

Поле header находится прямо под полем subclass в графическом интерфейсе wxFormBuilder. Если вы хотите отредактировать проект wxFormBuilder вручную, замените <property name="subclass">mygrid; </property> на <property name="subclass">mygrid; mygrid</property>. После регенерации у вас будет линия from mygrid import mygrid на gui.py.