[Python] 手軽にGUIアプリが作れるライブラリTkEasyGUIを使ってみた

はじめに

Pythonを利用してGUIアプリケーションを作成するライブラリは「Tkinter」や「PySimpleGUI」、「wxPython」「Kivy」などがありますが、本投稿では簡単にGUIアプリケーションを作成することができる「TkEasyGUI」について紹介したいと思います。

TkEasyGUIとは

TkEasyGUIはPythonのGUIアプリケーション作成に利用するライブラリの中で最も簡単にGUIアプリケーションを作成することができるライブラリです。
PySimpleGUIの概念を引き継ぎ、TkinterのようなUIライブラリの複雑さを解消しています。

このライブラリは「クジラ飛行机さん」が開発し、PySimplyGUIが商用利用で有料化されたことが開発するきっかけになったようです。ライセンスはMITライセンスを採用してしております。もちろん商用利用や再配布も可能なライセンスです。

TkEasyGUIのインストールと基本構文

TkEasyGUIはPython 3.9以降で動作が動作します。 またWindowsやMacOS、Linuxで動作します。

まずはインストールする前のvenvを使って仮想環境を用意します。TkEasyGUI開発用の仮想環境とします。(ここではPythonフォルダを作成しその配下にmy_pyguiという環境を作成します)

% mkdir python
% cd python
% python -m venv my_pygui      ・・・my_pyguiという環境を作成
% source my_pygui/bin/activate   ・・・仮想環境利用開始

(my_pygui) xxxx@example python %   ・・・ターミナルの最初に(my_pygui)とつきます。

上記状態でTkEasyGUIをpipコマンドを利用してインストールします。

(my_pygui) xxxx@example python % pip install TkEasyGUI
〜〜〜〜〜
Successfully installed Pillow-11.1.0 TkEasyGUI-1.0.21 pyperclip-1.9.0

(my_pygui) xxxx@example python % pip freeze
pillow==11.1.0
pyperclip==1.9.0
TkEasyGUI==1.0.21

上記のようにSuccessfully が表示されればインストール完了です。「pip freeze」コマンドを利用することで、インストールされているライブラリが表示できます。

TkEasyGUIを使って簡単なコードでGUIアプリを作成してみます。 gui001.pyというファイルを作成し、下記のコードを入力します。

import TkEasyGUI as eg
name = eg.input("What is your name?")
if name:
	eg.print(f"My name is {name}")
else:
	eg.print(f"Please input your name")

実際に今回作ったファイルを実行すると、下記のようになります。

Screenshot

テキスト欄に「Taro」を入力し「OK」をクリックすると、下記のような画面が表示されます。

Screenshot

これで基本的な使い方は終わりです。

利用ダイアログ一覧

いくつかのダイアログをサンプルを交えながら紹介します。

関数説明サンプル
printメッセージダイアログTkEasyGUI.print(”message”)
inputテキスト入力ダイアログTkEasyGUI.input(”input dialog”)
input_number数値入力ダイアログTkEasyGUI.input_number(“input number dialog”)
popup_buttonsポップアップウィンドウにメッセージと複数のボタンを表示TkEasyGUI.popup_buttons(message=”multiple buttons”, buttons=[“Red”, “Blue”, “Yellow”])
popup_image画像をポップアップウィンドウに表示する。パスはimage_pathを引数に指定するTkEasyGUI.popup_image(message=”popup image”, image_path=”./images/TkEasyGUI_logo.jpg”)
popup_colorカラーパレットを表示します。選択した色はformatに指定した形式で取得できます。TkEasyGUI.popup_color(format=”rgb”)

上記以外にもいろいろな関数が用意されていますので、これらを組み合わせて簡単にアプリケーションを作成することができます。
よりアプリケーションに近づけるようなサンプルコードについては次章をご参考ください。

tkeasygui-python/docs/TkEasyGUI/dialogs-py.md at main · kujirahand/tkeasygui-python
The easiest library for creating GUIs in Python. Contribute to kujirahand/tkeasygui-python development by creating an ac...

サンプルアプリケーション

下記アプリケーションは、フォルダを選択し、そのフォルダにあるファイルとフォルダ全てをリスト化するものです。
TkEasyGUIではいろいろな関数が用意されており、それらを使うことで実際のアプリケーションとして動作させることができます。

import os
from glob import glob
import TkEasyGUI as eg

# (1)
layout_1 = [
    [
        eg.Input("", key="dir", expand_x=True, enable_events=True), 
        eg.FolderBrowse()
    ]
]
# (2)
layout_2 = [
    [
        eg.Listbox([], key="files", size=(100, 30), enable_events=True, expand_x=True, expand_y=True)
    ]
]
# (3)
layout_3 = [
    [
        eg.Button("終了")
    ]
]
# (4)
window = eg.Window("Test",layout=[
    [eg.Frame("", layout=layout_1, expand_x=True)],
    [eg.Frame("", layout=layout_2, expand_x=True)],
    [eg.Frame("", layout=layout_3, expand_x=True)]
])
# (5)
for event, values in window.event_iter():
    if event == "終了":
        break
    
    if (event == "dir") and ("dir" in values):
        target_dir = values["dir"]
        expand_files = []
        for file in glob(os.path.join(target_dir, "*")):
            expand_files.extend(glob(file, root_dir=target_dir))
        window["files"].update(expand_files)

(1) 一覧表示させたいフォルダパスを設定するGUIを用意します。FolderBrowse関数も設定しておくことで、参照させたいフォルダを検索することができるようにしておきます。

(2) 次に、(1)で設定したフォルダの中身の一覧を表示する部分を用意します。ここではListBox関数を利用します。

(3) ここは単純に閉じるボタンを用意します。

(4) それぞれ(1)〜(3)で作成したものをFrame関数を使って上下に配置します。上から順番に設定するように今回は用意します。 ここまでを記載して実行してもまだ、何も表示されません。

(5) イベントループさせることで、画面を表示させることができます。このイベントループ内では、以下のイベントを処理します。
 ① 閉じるボタンをおした際に、終了する。
 ② フォルダパスを指定したら、その配下にあるファイル/フォルダのパスをListBoxに更新する

Screenshot

ModuleNotFoundError: No module named ‘_tkinter’が発生した場合

今回ハマったのですが、Homebrewを使ってpython3をインストールした場合は基本セットとしてtkinterがインストールされていないようです。

パターン1 python-tk をインストール

ですので、python-tkをインストールします。インストール済みのpythonのバージョンのpython-tkをインストールしましょう。

% python --version
Python 3.13.0
% brew install python-tk@3.13
% python -m tkinter

python -m tkinter と入力して実行した結果、GUIが表示されれば成功です。

Screenshot

パターン2 pyenvを利用している場合

pyenvを利用してpythonを利用している場合は、パターン1ではエラーが出てしまいます。 まずはpyenvを最新の状態にします。その後、pyenv側で対象のpythonのバージョンを再インストールします。

% brew upgrade pyenv
% brew reinstall tcl-tk
% pyenv uninstall 3.13.0
% pyenv install 3.13.0
% python -m tkinter
Screenshot
pyenvでインストールしたpythonでtkinterがimportできなかった時。 - Qiita
概要PySimpleGuiを使おうとしたところ_tkinterというモジュールがありませんと言われてから解決するまでの流れ環境macOS 10.14.6(18G87)pyenv(anyenv)…

まとめ

実際に色々試してみて、tkinterよりわかりやすく使いやすい印象です。 簡単なアプリケーションを作成するのであれば、TkEasyGUIを使うことで工数を短縮できると思います。ただ、デザイン面についてはもっと色々なことができるようになるとうれしいなぁという感じがしました。
ぜひ、使ってみてもらえればと思います。

参考

日経ソフトウェア 2025年5月号にTkEasyGUIに関する解説が書かれているので、ぜひ参考にしてみてはいかがでしょうか?

本投稿で紹介できなかった関数等はすべて下記のGitHubに掲載されているのでぜひご利用ください。

tkeasygui-python/README.md at main · kujirahand/tkeasygui-python
The easiest library for creating GUIs in Python. Contribute to kujirahand/tkeasygui-python development by creating an ac...

タイトルとURLをコピーしました