wxPython ボタンを押してテキストを書き換える方法

まくまく
まくまく
人気のGUIライブラリwxPythonでボタンイベントを設定してみます。ボタンを押すとテキストが書き換わるようにしてみました。



出力


下のプログラムを実行すると、ボタンが2つ並んだウインドウが立ち上がります。

(左上の小さい四角はパネルですね。消し忘れてました。)


ボタン1を押すと「ボタン1が押されました」というテキストが表示されます。


ボタン2を押すと「ボタン2が押されました」というテキストが表示されます。

それぞれのボタンを押すとテキストが上書きされます。例えば、別の場所に交互に表示するには片方をリセットする必要があるので、もう少しテクニックが必要になりそうです。空白で上書きしてもよさそうですけど、芸がない気がしますよね。

サンプルプログラム

#ライブラリのインポート
import wx

class MyFrame(wx.Frame):

    def __init__(self, *args, **kw):
        super(MyFrame, self).__init__(*args, **kw)
        
        pnl = wx.Panel(self)

        #テキストを作成
        self.text1 = wx.StaticText(self)

        self.button1=wx.Button(self, label="ボタン1",size=(60,60))
        self.button2=wx.Button(self, label="ボタン2",size=(60,60))

        #ボタンを割り当て
        self.Bind(wx.EVT_BUTTON, self.disp_text1, self.button1)
        self.Bind(wx.EVT_BUTTON, self.disp_text2, self.button2)

        #Sizerを作成
        self.sizer = wx.BoxSizer(orient=wx.VERTICAL)
        self.horizontal_sizer = wx.BoxSizer(orient=wx.HORIZONTAL)
        self.horizontal_sizer.Add(self.button1, 1)
        self.horizontal_sizer.Add(self.button2, 1)

        #テキストと画像をSizerに追加
        self.sizer.Add(self.horizontal_sizer, 1)
        self.sizer.Add(self.text1, 1)
        
        #sizerをセット
        self.SetSizer(self.sizer) 

    def disp_text1(self,event):
        self.text1.SetLabel("ボタン1が押されました")        

    def disp_text2(self, event):
        self.text1.SetLabel("ボタン2が押されました")

if __name__ == '__main__':
    app = wx.App()
    frm = MyFrame(None, title='wxPythonのテスト')
    frm.Show()
    app.MainLoop()
タイトルとURLをコピーしました