1

OK、それでivは私のプロジェクトのプログラムをほぼ完了しましたが、BUTTON_EVTを機能させることができません。正直なところ、これが最も簡単な方法です。プログラムにハードウェアを表すボタンがあり、それらをOGLキャンバスに表示するためのdef関数を作成しました。

  • 問題は解決しました...問題に関連するコードは以下の回答にあります
4

2 に答える 2

2

最後のコメントから編集。これを使用してください(独自の画像を使用して):

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ドキュメントとデモパッケージをダウンロードできます

于 2012-04-10T17:00:59.030 に答える
1

これが正しいかどうかはわかりませんが、このアプローチを採用して、機能するかどうかを確認することをお勧めします。

フレームクラスを次のように変更します。

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)

結果を教えてください。

于 2012-04-10T17:36:35.570 に答える