この記事について
こちらにまとめられています。
今回、何をするか?
ボタンを押し、なんらかのアクションを起こしてみましょう!
とりあえず動かしてみよう!
押すと、ラベルの内容が変わるボタンを作ってみましょう。
# app.py import wx class MyApp(wx.Frame): def __init__(self, *args, **kw): super(MyApp, self).__init__(*args, **kw) self.init_ui() def init_ui(self): self.SetTitle('ラベル') self.SetSize((400, 300)) self.Show() panel_ui = wx.Panel(self, -1, pos=(50, 50), size=(300, 200)) self.label = wx.StaticText(panel_ui, -1, 'こんにちは。', pos=(10, 10)) btn = wx.Button(panel_ui, -1, '変換', pos=(10, 50)) btn.Bind(wx.EVT_BUTTON, self.clicked) def clicked(self, event): self.label.SetLabel('Hello.') app = wx.App() MyApp(None) app.MainLoop()
次のように実行するとこのような画面ができるはずです。
> pythonw app.py
ここで、ボタンを押すと、「こんにちは。」が「Hello.」に変わります。
解説
btn = wx.Button(panel_ui, -1, '変換', pos=(10, 50))
ボタンを作るにはにはButton()を使います。
引数はラベルで使ったStaticText()と全く同じです。
btn.Bind(wx.EVT_BUTTON, self.clicked)
Bind()を使うことによって、ボタンにアクションを紐づけることができます。引数はBind(きっかけ, アクション)です。
今回は「wx.EVT_BUTTON(ボタンがクリックされた)」というきっかけで、「self.clicked(clicked()関数を呼び出す)」というアクションを起こします。
def clicked(self, event): self.label.SetLabel('Hello.')
先ほどBind()で出てきたclicked()関数を作ります。
内容は今回はラベルの変更ですが、変えればなんでもできます。
以上です。
次回
テキストボックスを設置して、何か入力を得ましょう。