リンク

2016年4月20日水曜日

pythonでGUIツールを作る ~ボタン~

pythonでGUIフォームを作成するためのツールキットはいくつか存在します。
中でも「wxPython」はプリインストールされている「tkinter」よりも使い勝手・自由度が高く、人気があるようです。

当ブログではそんな「wxPython」を用いてpythonでGUIツールを作成する方法を少しずつご紹介していきます。

- - - - - - - - - - - - - - - - - - - - - - - - - -

今回は基本的なウィジットのひとつである”ボタン“について書いていきます。

# -*- coding: utf-8 -*-

import wx

# ボタンのクリックイベント関数
def click(event):
    frame.SetStatusText("button was Click!!")

app = wx.App()

frame = wx.Frame(None, -1, u'タイトル', size=(200, 200))
frame.CreateStatusBar()
panel = wx.Panel(frame, -1)

# ボタン1の設置
button_1 = wx.Button(panel, -1, u'ボタン')

# ボタンのクリックイベント
button_1.Bind(wx.EVT_BUTTON, click)

frame.Show()
app.MainLoop()


<結果>
ボタンをクリックしたところ

上記スクリプト内で、過去に解説した内容については省略致します。
ご確認いただきたい場合は、~基礎編~をご覧ください。

続いて詳細を見ていきます。


~~詳細~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# ボタン1の設置
button_1 = wx.Button(panel, -1, u'ボタン')
ボタンを作成(インスタンス化)するにはwx.Buttonクラスを使用します。
引数は(親ウィジット、識別子、指定文字列)です。
今回は省略していますが、引数には設置位置(pos)とサイズ(size)を指定することもできます。

また、ボタン作成時にスタイルを指定することによって、文字列の表示位置を設定することができます。
※表示位置の指定がない場合は、デフォルトで中央となります。

1.上寄せ
button_1 = wx.Button(panel, -1, u'ボタン', style=wx.BU_TOP)

2.下寄せ
button_1 = wx.Button(panel, -1, u'ボタン', style=wx.BU_BOTTOM)

3.左寄せ
button_1 = wx.Button(panel, -1, u'ボタン', style=wx.BU_LEFT)

4.右寄せ
button_1 = wx.Button(panel, -1, u'ボタン', style=wx.BU_RIGHT)

# ボタンのクリックイベント
button_1.Bind(wx.EVT_BUTTON, click)
ボタンがクリックされたときに呼び出す関数を指定します。
この関数は事前に作成しておく必要があります。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

今回はボタンの作成方法、イベントの呼び出し方法についてご紹介しました。
GUIツールを作成する際、ボタンは必ずといっていいほど使用します。
基本的なウィジットだからこそ、しっかり覚えておきましょう。

==================================================================
環 境:Python 2.7.9 / Windows7
==================================================================
この記事が参考になりましたら、シェア・フォロー・おすすめしていただけると励みになります! \(^o^)/
==================================================================

3 件のコメント:

  1. ほかのコントロールもですが、カーソルがボタンの上に乗ったらカーソルアイコンを
    手のようなアイコン(?)にしたいです。

    返信削除
  2. コメントありがとうございます!
    カーソルを変化させるにはwx.Cursorクラスを使用します。

    まず、対象のウィジット(今回はボタン)に対して、wx.EVT_ENTER_WINDOWイベントとwx.EVT_LEAVE_WINDOWイベントを準備します。
    button_1.Bind(wx.EVT_ENTER_WINDOW, enter)
    button_1.Bind(wx.EVT_LEAVE_WINDOW, leave)


    そして、それぞれのイベント内容を記述します。

    def enter(event):
    ____# マウスが入ってきたとき
    ____frame.SetCursor(wx.Cursor(wx.CURSOR_WAIT))

    def leave(event):
    ____# マウスが出ていったとき
    ____frame.SetCursor(wx.Cursor(wx.CURSOR_ARROW))

    他のカーソル形態については下記URLをご覧ください。
    https://wxpython.org/Phoenix/docs/html/wx.StockCursor.enumeration.html

    返信削除
    返信
    1. 早速のご返信をありがとうございます!!
      とても分かりやすく、参考になりました!!

      削除