クラスをPanelとして定義し、後でそのクラスをフレームで呼び出すにはどうすればよいですか?
あなたが試したことは近いですが、あなたはスーパークラスを適切に呼び出していません__init__
。ただし、wxPythonクラスをサブクラス化する場合は、通常、次のパターンを使用することをお勧めします。これにより、渡す特定の引数について心配する必要がなくなります。(これでは、問題のコードの範囲外であった問題は解決されませんでしたが、何が起こっているのかが明確になる可能性があります。)
class Panel(wx.Panel):
def __init__(self, *args, **kwargs):
wx.Panel.__init__(self, *args, **kwargs)
# ... code specific to your subclass goes here
これにより、渡されたものはすべて、追加や削除なしでスーパークラスメソッドに渡されます。つまり、サブクラスのシグニチャはスーパークラスのシグニチャと完全に一致します。これは、サブクラスを使用している他の誰かがおそらく期待するものでもあります。
__init__()
ただし、スーパークラスを呼び出す以外に自分のメソッドで実際に何もして__init__()
いない場合は、メソッドを提供する必要はまったくありません。
あなたの元の問題に関して:
しかし、それは私にこのエラーを与えます:__init__ windows.Panel_swiginit(self,windows.new_Panel(*args, **kwargs)) TypeError: in method 'new_Panel', expected argument 1 of type 'wxWindow *'
(編集済み)ハビエル(およびブライアン・オークリー、私を訂正)が指摘したように、あなたは実際に__init__
はスーパークラスを呼び出すのではなく、内部でwx.Panel()をインスタンス化していました。__init__
(Javierによる「親」引数の「* args」への変更は私を混乱させました...混乱させて申し訳ありません。)