1

背景が関連しているかどうかはわかりませんが、可能性に含めます

wxglade から移行するので、wxglade から XRC を生成し、wxformbuilder にインポートしました

いくつかの機能を追加するためにサブクラス化したグリッドがあります.wxformbuilderではグリッドが正しく表示され、サブクラスの妥当性も正しいです(mygrid.MyGrid)

しかし、もちろん、生成されたコードは必要に応じて mygrid をインポートしないため、実行すると次のようにスローされます。

NameError: global name 'mygrid' is not defined

これはバグですか、それとも何か間違っていますか? 回避策はありますか?

4

2 に答える 2

2

あなたの回避策は、数ヶ月間私を助けてくれました。

今日まで、C++ のみheaderを示すフィールド ヘルプを最終的に無視し、サブクラスがあるモジュール名をそこに示しました。これで、生成されたクラスはサブクラス定義を適切にインポートします。

このフィールドは、wxFormBuilder GUIheaderのフィールドのすぐ下にあります。subclasswxFormBuilder プロジェクトを手動で編集したい場合は<property name="subclass">mygrid; </property><property name="subclass">mygrid; mygrid</property>. 再生成するとfrom mygrid import mygrid、gui.py に行ができます。

于 2013-08-01T09:01:28.837 に答える
1

わかりました、うまくいくと思われる醜い回避策を見つけました

基本的に、モジュール グローバル dictionay への参照を手動で追加します。
例では、コードはファイル gui.py で生成され、私のクラスはファイル mygrid.py 内にあります。

import mygrid
import gui
import sys
setattr(sys.modules["gui"], "mygrid", mygrid)
于 2011-12-22T02:05:28.023 に答える