wxformbuilder генерируемый Python код генерирует NameError - PullRequest
1 голос
/ 22 декабря 2011

Не уверен, что фон имеет значение, но я включу его в случайность

Я переезжаю из wxglade, поэтому я сгенерировал XRC из wxglade и импортировал в wxformbuilder

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

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

NameError: global name 'mygrid' is not defined

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

Ответы [ 2 ]

2 голосов
/ 01 августа 2013

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

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

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

1 голос
/ 22 декабря 2011

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

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

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