PythonのちょっとしたGUIにEelが便利

自分用にちょっとしたGUIをPythonで作りたいときのライブラリにしっくりくるものが無かったんだけど、最近Eelというライブラリを試してみたらこれが中々良い感じだった。
Electronを軽くした感じのライブラリで、GUIをhtmlで作成できる。
内部的にはbottleでサーバーを立てて、それにChromiumからリクエストを送るような作りになっているようだ。

使い方は公式のgitや、Qiitaの記事を参照。

例えば、リンクをクリックした際にPythonのスクリプトを起動したい場合は以下のようにする。

フォルダ構成main.py
web
 └─ main.html

main.pyimport eel

def main():
    eel.init("web")
    eel.start("main.html")


"""link1が押下された際に呼び出すスクリプト"""
@eel.expose
def link1_click():
    print("link1_clicked")

"""link2が押下された際に呼び出すスクリプト"""
@eel.expose
def link2_click(args):
    print(args)
    return "link2_clicked"

if __name__ == '__main__':
     main()

main.html<html>
<head>
    <meta charset="UTF-8">
    <title>eel_exsample</title>
    <script type="text/javascript" src="/eel.js"></script>
    <script type="text/javascript">
        // 非同期でPythonスクリプトを実行する
        function link1Click() {
            eel.link1_click();
        }
        
        // Pythonスクリプトに引数を渡し、結果の帰り値を待つ例
        async function link2Click() {
            let val = await eel.link2_click("args-test")();
            alert(val);
        }
    </script>
</head>

<body>
    <a href="#" onclick="link1Click()">Link1</a>
    <br>
    <a href="#" onclick="link2Click()">Link2</a>
</body>
</html>

・実行結果


Link1は単純にPythonスクリプトを実行する例、Link2はPythonスクリプトに引数を渡し、その帰り値を待つ実行例。

・Link2押下結果


非常にシンプルである。
自分用に作ったスクリプトにちょっとしたGUIを付けたいときなんかは非常に重宝しそう。
作ったソフト公開するには作りが素朴すぎるかな。少し使い込んでみてここら辺の感覚はつかみたい。

これとPygletぐらいあれば、自分のやりたいことは一通り簡単に実装できそうだ。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です