デザインのメモ

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

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))

        self.box = wx.TextCtrl(panel_ui, -1, pos=(10, 50))

        btn = wx.Button(panel_ui, -1, 'コピー', pos=(10, 90))
        btn.Bind(wx.EVT_BUTTON, self.clicked)

    def clicked(self, event):
        text = self.box.GetValue()
        self.box.Clear()
        self.label.SetLabel(text)


app = wx.App()
MyApp(None)
app.MainLoop()

次のように実行するとこのような画面ができるはずです。

> pythonw app.py

f:id:nippori30:20170923232659p:plain
ここで、ボタンを押すと、テキストボックス内の文字が表示され、テキストボックスが空に戻るはずです。

解説

        self.box = wx.TextCtrl(panel_ui, -1, pos=(10, 50))

テキストボックスを作るにはにはTextCtrl()を使います。
引数はラベルやボタンなどと同じです。

        text = self.box.GetValue()
        self.box.Clear()

1行目のGetValue()はテキストボックの内容を取得してくれるメソッドです。
2行目のClear()はテキストボックの中身を消して、空にしてくれるメソッドです。
Clear()は内容を残しておきたい場合は無くしてしまって構いません。

以上です。

次回

画像を表示してみましょう。