2018-04-19

wxPython ふたたび

Websocket を Java で扱いたくて悪戦苦闘していましたが、JavaEE 環境を用意せずにちょこっとプログラムを作るなんていうことはどうやら叶わぬ夢と悟りました。いや、ほんと、ちょこっとした環境でテストして、JavaFX でちょこっとした GUI プログラムにして、ちょこっと使えるようにしたかったのですが…。

もしかすると python であれば、そんな夢を叶えてくれるかもしれないと考え、試してみたところ…難なくやりたいことが出来てしまいました。💦

使用環境は以下のとおりです。

  • OS: Windows 7 Enterprise SP1 (x86_64)
  • Python: Python 3.6.5 (amd64)

さて、ここからが本題です。

今回、python 2.7 系をアンインストールして、情報量が豊富であろう最新の python 3.6 系をインストールしました。そもそも python 2.7 系を使っていたのは、その当時、wxPython が新しい python にまだ対応していなかったからでした。さすがに今ではもう対応しているだろうとあらためて調べてみると、すでに pip でインストールできるようになっていました。早速、下記のようにしてインストールしました。

> py -m pip install -U wxPython

しばらく wxPython を使っていなかったので、リハビリがてら、参考サイト [3] にあった Hello World のプログラムをコピーして動作確認しました。コメントを除いて以下に再掲しました。

リスト:helloworld2.py 
import wx

class HelloFrame(wx.Frame):

    def __init__(self, *args, **kw):
        super(HelloFrame, self).__init__(*args, **kw)

        pnl = wx.Panel(self)

        st = wx.StaticText(pnl, label="Hello World!", pos=(25,25))
        font = st.GetFont()
        font.PointSize += 10
        font = font.Bold()
        st.SetFont(font)

        self.makeMenuBar()

        self.CreateStatusBar()
        self.SetStatusText("Welcome to wxPython!")


    def makeMenuBar(self):

        fileMenu = wx.Menu()
        helloItem = fileMenu.Append(-1, "&Hello...\tCtrl-H", "Help string shown in status bar for this menu item")
        fileMenu.AppendSeparator()
        exitItem = fileMenu.Append(wx.ID_EXIT)

        helpMenu = wx.Menu()
        aboutItem = helpMenu.Append(wx.ID_ABOUT)

        menuBar = wx.MenuBar()
        menuBar.Append(fileMenu, "&File")
        menuBar.Append(helpMenu, "&Help")

        self.SetMenuBar(menuBar)

        self.Bind(wx.EVT_MENU, self.OnHello, helloItem)
        self.Bind(wx.EVT_MENU, self.OnExit,  exitItem)
        self.Bind(wx.EVT_MENU, self.OnAbout, aboutItem)


    def OnExit(self, event):
        self.Close(True)


    def OnHello(self, event):
        wx.MessageBox("Hello again from wxPython")


    def OnAbout(self, event):
        wx.MessageBox("This is a wxPython Hello World sample", "About Hello World 2", wx.OK|wx.ICON_INFORMATION)


if __name__ == '__main__':
    app = wx.App()
    frm = HelloFrame(None, title='Hello World 2')
    frm.Show()
    app.MainLoop()

実行例を示します。

> py helloworld2.py

ざっと眺めたところ、昔と変わりありません。しばらく GUI プログラムをするのに JavaFX を使うのを止めて、ふたたび wxPython を使ってみたくなりました。今回 Windows を使っているのは、純粋に業務上必要だったからなのですが、自宅で Linux 上でも動作確認をして、具合が良ければもうすこしのめり込みます。

参考サイト

  1. Python Releases for Windows | Python.org
  2. Welcome to wxPython! | wxPython
  3. Overview of wxPython | wxPython

ブログランキング・にほんブログ村へ
にほんブログ村

0 件のコメント: