OK、それでivは私のプロジェクトのプログラムをほぼ完了しましたが、BUTTON_EVTを機能させることができません。正直なところ、これが最も簡単な方法です。プログラムにハードウェアを表すボタンがあり、それらをOGLキャンバスに表示するためのdef関数を作成しました。
- 問題は解決しました...問題に関連するコードは以下の回答にあります
OK、それでivは私のプロジェクトのプログラムをほぼ完了しましたが、BUTTON_EVTを機能させることができません。正直なところ、これが最も簡単な方法です。プログラムにハードウェアを表すボタンがあり、それらをOGLキャンバスに表示するためのdef関数を作成しました。
最後のコメントから編集。これを使用してください(独自の画像を使用して):
def OnClickRouter(self, event):
image=wx.Image('cat.jpg', wx.BITMAP_TYPE_JPEG)
self.frame = bucky(None, image)
self.frame.Show()
この方法でbucky()を呼び出す場合は、クラスのシグネチャも修正する必要があります。
class bucky(wx.Frame):
# Creating the outer window/frame
def __init__(self, parent, image=None):
wx.Frame.__init__(self, parent, -1,'Karls Network Tool', size=(900,700))
my_image = image if image else wx.Image("myself.bmp", wx.BITMAP_TYPE_BMP)
''''''''''''''''''''''''''''''''
# Button images
buttonOneRouter = my_image.ConvertToBitmap()
self.buttonOneRouter = wx.BitmapButton(panel, -1, buttonOneRouter, pos=(20,340))
self.buttonOneRouter.Bind(wx.EVT_BUTTON, self.OnClickRouter)
''''''''''''''''''''''''''''''''
次に、buttonOnerouterをクリックした後、実際に行っているのは新しいフレームを開いていることがわかります。左の図はプログラムを実行したときに得られるもので、右の図はクリックして名前をもう一度入力した後のものです(コードを少し簡略化したため、下部に4つではなく1つのボタンしか表示されません)。
ボタンではなくキャンバスに私の猫を入れたい場合は、まだやるべきことがいくつかあります。wxPythonデモをご覧になることをお勧めします。その他の例のグループには、その方法を示すOGLと呼ばれるものがあります。
編集:ここからwxPythonドキュメントとデモパッケージをダウンロードできます
これが正しいかどうかはわかりませんが、このアプローチを採用して、機能するかどうかを確認することをお勧めします。
フレームクラスを次のように変更します。
def __init(self,parent,id,img=None)
def onClickRouter(self,event):
image=wx.Image('router.jpg', wx.BITMAP_TYPE_JPEG)
temp = image.ConvertToBitmap()
self.bmp = wx.StaticBitmap(parent=self, bitmap=temp)
self.frame=bucky(self.bmp)
結果を教えてください。