• トップ
  • ブログ一覧
  • PythonでGUIを組んで簡単なテキストエディタを作ってみた!
  • PythonでGUIを組んで簡単なテキストエディタを作ってみた!

    広告メディア事業部広告メディア事業部
    2019.07.24

    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ライブラリと機械学習を組み合わせたアプリケーションを作成しながら解説しています。

    ぜひ読んでみてください!

    featureImg2019.06.27KerasとKivyを使って手書き数字認識アプリを作ってみた!手書き数字認識アプリを作りたい前回の 自作の誤差逆伝播学習法で手書き数字を認識させてみよう! では、自作プログラムで自...

    こちらの記事もオススメ!

    featureImg2020.07.28機械学習 特集知識編人工知能・機械学習でよく使われるワード徹底まとめ!機械学習の元祖「パーセプトロン」とは?【人工知能】ニューラルネ...

    featureImg2020.07.17ライトコード的「やってみた!」シリーズ「やってみた!」を集めました!(株)ライトコードが今まで作ってきた「やってみた!」記事を集めてみました!※作成日が新し...

    オススメのwxPython本

    Creating GUI Applications with wxPython
    Creating GUI Applications with wxPython

     

    広告メディア事業部

    広告メディア事業部

    おすすめ記事