wxPython ボックスレイアウトでテキストを表示する方法

まくまく
まくまく
やっぱりアプリが作りたい!PythonのGUIライブラリtkinterもkivyも良いのだけど、もうひとつ何かこう、、、良いとこ取りをしたものはないかと探してたらいきついたwxPython。まずは色々と試していこうと思います。



出力


今回作成したのはこちら。公式のドキュメントを参考にして作りました。ウインドウを作成し3種類のテキストをBoxSizerで表示しています。

BoxSizerで配置方向は「orient=wx.VERTICAL」に指定しているので3つのテキストが縦に並びます。横並びの場合は「wx.HORIZONTAL」です。

上段、中段はStaticText、下段はTextCtrlにしています。いちばんの上のテキストが切れているのもポイントですね。中段、下段はself(MyFrame)に配置しているのに対して、上段はpnl(Panel)に配置してます。

サンプルプログラム

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

class MyFrame(wx.Frame):

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

        #テキストを3種類作成
        text1 = wx.StaticText(pnl, label="Hello World!")
        text2 = wx.StaticText(self, label="Hello World!")
        text3 = wx.TextCtrl(self, id=-1, value='Hello World!')
        text3.SetBackgroundColour('white')
       
        #Sizerを作成
        sizer = wx.BoxSizer(orient=wx.VERTICAL)
        #テキストをSizerに追加
        sizer.Add(text1, 1) 
        sizer.Add(text2, 1)
        sizer.Add(text3, 1)

        #sizerをセット
        self.SetSizer(sizer) 

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