PythonでGUIを組んで簡単なテキストエディタを作ってみた!
IT技術
Pythonで可能なことは機械学習や分析だけじゃない!
現在、最も人気のあるプログラミング言語「Python」。
Pythonというプログラミング言語は、一般的に「機械学習や高等な分析などに使う」というイメージが強いのではないでしょうか?
実は、Pythonで、GUIを組んだりゲームを作成したりすることが可能です。
GUIに関しては、Pythonは標準で「Tkinter」というGUIを構築するライブラリが備わっています。
そのため、何か特別なライブラリをインストールせずとも、GUIを組むことができるのです。
Tkinter以外のライブラリ
GUIを組むためのライブラリは、「Tkinter」以外にも存在します。
どういったGUIライブラリがあるのかというと、人気が高くなってきている「Kivy」。
それから、wxWidgetsのPythonバージョンである「wxPython」などがあります。
また、これらのライブラリは、pipコマンドを使えば容易にインストールが可能。
「GUIを組むための環境をつくるのは面倒」と思っていた人にとっては朗報です!
wxPythonで簡単なGUIを組んでみる
ここからは、実際にPythonでGUIを実際に組んでみたいと思います。
まず、Python本体とGUIを組むためのライブラリであるwxPythonのインストールをしてみましょう。
Pythonのインストール
Pythonのインストールは、公式サイトにあるインストーラーを使えばOKです。
【Pythonの公式サイト】
https://www.python.org/
wxPythonをインストール
Pythonのインストールが済んだら、コマンドプロンプトを起動して、pip install wxPython と入力してください。
Python本体のインストールと環境変数の設定がきちんとされていれば、問題なくwxPythonをインストールできるでしょう。
次に、コマンドプロンプトで、python と入力し、Pythonインタプリタを起動させてください。
そして、その状態で、import wx と入力しましょう。
これらがエラーなく行えれば、環境の構築は完了です。
実際にGUIを組んでみる
さて、次は実際にGUIを組んでみましょう!
まず最初は、「何もないウィンドウを表示」するところから始めてみるとしましょう。
コードはこちらです。
1import wx
2
3window = wx.App() # wxPythonのGUI Appインスタンスを生成 (= GUI Appを初期化)
4frame = wx.Frame(None, -1, '空のウィンドウ', size=(500, 250)) # フレーム作成
5frame.Show() # フレーム表示
6window.MainLoop() # イベント待機
実行と解説
このように、たった5行のコードのみで、任意のサイズのウィンドウを表示できてしまいます。
wx.Frame(None, -1, '空のウィンドウ', size=(500, 250)) は第一引数に親オブジェクトを取り、第二引数でIDを取ります。
第三引数は見てわかるように、GUIウィンドウのタイトルです。
親オブジェクトは今回はNone となっていますが、今後いま作成した「フレーム(frame )」にボタンなどを配置していく時には、frame が親オブジェクトになります。
またIDは、あらかじめ予約してあるwx.ID_OPEN などを指定すると簡単にボタンなどが作成可能ですが、通常は-1 かwx.ID_ANY にしておきます。
それでは作成したウィンドウに「ボタン」を配置したり、「文字」を表示したりすることで、もう少し実用的なGUIアプリケーションを作成してみましょう!
簡単なテキストエディタを作ろう!
次に、単純なソフトといえるGUIを作ってみましょう!
まずは、コードをご覧ください。
1import wx
2
3
4def click_save_button(event): # 保存ボタンをクリック時の動作
5 save_file = open('wxtest.txt', 'w') # テキストファイルを開く
6 save_file.write(text.GetValue()) # 入力されたテキストを取得し、ファイルへ書き込み
7 save_file.close()
8
9
10if __name__ == '__main__':
11 window = wx.App() # wxPythonのGUI Appインスタンスを生成 (= GUI Appを初期化)
12 frame = wx.Frame(None, -1, 'テキスト入力&保存', size=(500, 250)) # フレーム作成
13
14 panel = wx.Panel(frame, -1) # ボタンやテキストボックスを配置するためのパネルを作成
15 save_button = wx.Button(panel, -1, pos=(10, 10), label='保存') # 保存ボタンの作成
16
17 text = wx.TextCtrl(panel, -1, pos=(10, 50), size=(465, 150), style=wx.TE_MULTILINE) # テキストボックスの作成
18 save_button.Bind(wx.EVT_BUTTON, click_save_button) # 保存ボタンとボタン押下時の動作をまとめた関数をひもづける
19 frame.Show() # フレーム表示
20 window.MainLoop() # イベント待機
解説
このコードを実行すると、上記の図のような、簡単なテキストエディタになります。
機能としては、保存ボタンを押したときに、カレントディレクトリへ入力したテキストを「wxtest.txt」という名前で保存するものとなっています。
「ボタンを押したときに指定の動作をする」「テキスト入力を受け取る」といったことをしています。
またButton クラスでは、引数として配置座標とラベル名をそれぞれ、pos=(x, y) 、label='hogehoge' としてとります。
なんと、たった20行未満のコードを書くだけで、シンプルなテキストエディタが完成しました!
今回は、簡単な例を掲載しましたが、コードを拡張していくことで、様々なアプリを作成することが可能となります。
さいごに
Pythonという言語は、「機械学習」や「複雑な分析」に用いられることが多いのは事実です。
では、これらに使われる以外の特徴はないのか?というと、そうではないことをご理解いただけたと思います。
Pythonでは、サイズの大きなソフトを使ったり、面倒な環境構築したりせずに、GUIを組むことができるという特徴があります。
PythonそのものやGUI開発に興味がある人は、本記事を参考にぜひ挑戦してみてくださいね!
また以下の記事では、今回は紹介しきれなかったKivyというGUIライブラリと機械学習を組み合わせたアプリケーションを作成しながら解説しています。
ぜひ読んでみてください!
こちらの記事もオススメ!
2020.07.28機械学習 特集知識編人工知能・機械学習でよく使われるワード徹底まとめ!機械学習の元祖「パーセプトロン」とは?【人工知能】ニューラルネ...
2020.07.17ライトコード的「やってみた!」シリーズ「やってみた!」を集めました!(株)ライトコードが今まで作ってきた「やってみた!」記事を集めてみました!※作成日が新し...
オススメのwxPython本
ライトコードでは、エンジニアを積極採用中!
ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。
採用情報へ
「好きを仕事にするエンジニア集団」の(株)ライトコードです! ライトコードは、福岡、東京、大阪、名古屋の4拠点で事業展開するIT企業です。 現在は、国内を代表する大手IT企業を取引先にもち、ITシステムの受託事業が中心。 いずれも直取引で、月間PV数1億を超えるWebサービスのシステム開発・運営、インフラの構築・運用に携わっています。 システム開発依頼・お見積もり大歓迎! また、現在「WEBエンジニア」「モバイルエンジニア」「営業」「WEBデザイナー」を積極採用中です! インターンや新卒採用も行っております。 以下よりご応募をお待ちしております! https://rightcode.co.jp/recruit
おすすめ記事
immichを知ってほしい
2024.10.31