Help us understand the problem. What is going on with this article?

wxPythonを使ってみる (1)

More than 1 year has passed since last update.

はじめに

対象

 Python3による開発経験のある方を対象としています.Python3プログラミングの基礎や開発環境の作り方,使い方は特に説明しません.
 既にPython3とwxPythonがインストールされていることを前提としています.

wxPythonとは

 wxPythonは,Python3から利用できるGUIツールキットです.

動作環境

 動作確認に使用したバージョンは以下のとおりです。
 Python 3.6.4
 wxPython 4.0.1

windowを使う

単純なwindow表示

window_display01.py
import wx
app = wx.App()
frame = wx.Frame(None, -1, 'Hello,World!',size=(500,500))
frame.Show()
app.MainLoop()

まず,import wx を使ってwxモジュールのインポートを行います.もちろん,wxPythonをインストールしていないとImportErrorが発生します.

app = wx.App() はwx.Appオブジェクトをインスタンス化しています.wxPythonを利用するため必須なインスタンス.

3行目は,親オブジェクト,ID,タイトルの引数でwx.Frameオブジェクトをインスタンス化しています.また,sizeはwindowのサイズ(幅×高さ)となります.

frame.Show() はwx.FrameクラスのShow関数を呼び出すことによって,作成されたフレームが可視化されます.window_display.pyの実行結果は下の図となります.
スクリーンショット 2018-04-10 11.10.14.png

app.MainLoop() はwx.AppのMainLoop関数を呼び出しを行い,イベントのキャッチを開始します.この行をコメントアウトして再実行すると,フレームが一瞬表示されたあと,アプリケーションが終了してしまいます.

追記:

今回のサンプルコードではwx.Appクラスを引数なしでインスタンス化していますが,最大で4つの引数を渡すことができます.以下の4つのappをそれぞれ試してください.

window_display02.py
import wx
(1) app = wx.App()
(2) app = wx.App(False)
(3) app = wx.App(True,"出力ファイルパス")
(4) app = wx.App(True,None)
frame = wx.Frame(None, -1, 'Hello,World!',size=(500,500))
frame.Show()
print("Welcome")
app.MainLoop()

予約済みID

以下のサンプルコードは予約済みIDを利用したwx.Buttonの例です.

window_display03.py
import wx
app = wx.App(False)
frame = wx.Frame(None, -1, 'Hello,World!' ,size=(300,100))

wx.Button(frame, wx.ID_OPEN, pos=(10,10) ,label="開く")
wx.Button(frame, wx.ID_CLOSE, pos=(10,40))
wx.Button(frame, wx.ID_NEW, pos=(100,10))
wx.Button(frame, wx.ID_SAVE, pos=(100,40))
wx.Button(frame, wx.ID_HELP, pos=(200,40))

frame.Show()
app.MainLoop()

下の図は実行結果となります.
wx.ID_OPEN,wx.ID_CLOSE,wx.ID_NEWなどは「予約済みIDとなります.
posはボタンの配置座標(縦×横)となります.
labelはボタンのラベル名となります.

スクリーンショット 2018-04-10 12.19.51.png

今回のwxPythonを使ってみる(1)は以上で終わります.
読んでいただいてありがとうございます.
また今度で会いましょ!

Kenta-Han
Python3,MySQL,HTML・CSS,JavaScript,Java,...| 2020/4~:IT スペシャリスト| 2019/6〜2019/12:画像分析(インターン)| 2018/4〜2019/12:TA(大学院)| 2017/8〜2018/2:Webサービス制作(インターン)
http://kenta2016myhp.sitemix.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした