デザインのメモ

ロゴやフォント、フォトショ・イラレのお話をします

wxPython(Phoenix)で始めるGUIプログラミング【ボタン】

この記事について

こちらにまとめられています。

nippori30.hatenablog.com

今回、何をするか?

ボタンを押し、なんらかのアクションを起こしてみましょう!

とりあえず動かしてみよう!

押すと、ラベルの内容が変わるボタンを作ってみましょう。

# 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

f:id:nippori30:20170916085151p:plain
ここで、ボタンを押すと、「こんにちは。」が「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()関数を作ります。
内容は今回はラベルの変更ですが、変えればなんでもできます。

以上です。

次回

テキストボックスを設置して、何か入力を得ましょう。