PythonでEelを用いてオフラインのHTML/JS GUIアプリを作成・検証する

スポンサーリンク

PythonでEelを用いてオフラインのHTML/JS GUIアプリを作成・検証してみます。

今回はEelを用います。このライブラリは、Pythonの標準ライブラリではありませんので、事前にインストールする必要があります。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■ディレクトリを作成する

Eelを用いてオフラインのHTML/JS GUIアプリを作成してみますが、その前にディレクトリを作成します。

今回は「C:\Users\user_(フォルダパス)」内に「eel_test」というディレクトリを作成しました。このディレクトリ内にWebファイルやPythonスクリプトなどを配置していきます。

■Pythonのスクリプトファイルを作成

新しいディレクトリを作成後、「eel_test」内にPythonのスクリプトファイルを作成します。作成する際の参考はこちら(https://github.com/ChrisKnott/Eel/tree/master/examples/01%20-%20hello_world)。今回はコードもこちらのコードを参考に編集しています。

■コード

import eel

eel.init('web')

@eel.expose                         
def say_hello_py(x):
    print('こんにちは %s' % x)

say_hello_py('田中さん')
eel.say_hello_js('吉田さん')   

eel.start('hello.html', size=(300, 200))

importでeelモジュールを呼び出します。その後、eel.init()を用いて「eel_test」ディレクトリ内に後から作る「web」ディレクトリを設定します。

設定後、「@eel.expose」とし、Javascriptに公開する関数を定義していきます。今回はsay_hello_pyという変数を定義し、関数が呼び出された時に実行される処理としては、print()を用いて文字列を出力させるものになります。

関数を定義後、say_hello_py()を用います。括弧内には引数,パラメータとして「% x」の部分に置き換える文字列を渡します。渡した後に、もう1つsay_hello_py()を用います。これは後で作成するhtmlファイル内のJavascript側で定義した関数のものになります。

最後にアプリを起動するために、eel.start()を用います。括弧内には第1の引数,パラメータとしてhtmlファイルを渡します。第2の引数,パラメータ(size=)として起動したアプリのサイズを渡します。

コードを記述後、「hello.py」という名前で「eel_test」ディレクトリ内に保存します。

保存後、「eel_test」ディレクトリ内に「web」ディレクトリを作成します。

■htmlファイルを作成する

「web」ディレクトリを作成後、「web」内にhtmlファイルを作成します。作成する際の参考はこちら(https://github.com/ChrisKnott/Eel/tree/master/examples/01%20-%20hello_world)。今回もこちらのコードを参考に編集しています。

■コード

<!DOCTYPE html>
<html>
    <head>
        <title>こんにちは、世界</title>
        <script type="text/javascript" src="/eel.js"></script>
        <script type="text/javascript">
        
        eel.expose(say_hello_js);               
        function say_hello_js(x) {
            console.log("Hello from " + x);
        }
        
        say_hello_js("Javascript World!");
        eel.say_hello_py("Javascript World!");  
        
        </script>
    </head>
    
    <body>
        こんにちは、世界!
    </body>
</html>

先程のPythonスクリプトと同じように関数を定義し、定義した関数が呼び出された時に実行される処理も、console.log()を用いて、文字列をWebコンソールに出力するものですが、「eel」とJavascriptの関数を呼び出すものとなっています。

このファイルを「hello.html」という名前で「web」ディレクトリ内に保存します。

■実行・検証

保存後、Windows10のコマンドプロンプトを起動します。起動後、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)に移動しているかを確認します。

>cd eel_test

確認後、上記のコマンドを入力し、Enterキーを押します。cdコマンドで「eel_test」ディレクトリへ移動します。

>py -3.8 hello.py

移動後、上記のコマンドを入力し、Enterキーを押します。今回はPython側から呼び出してみます。

スクリプトを実行してみると、Webサーバーが起動し「http://localhost:8000/hello.html」のURLにアクセスし、ブラウザが開きます。なお「http://localhost:8000/」はデフォルト設定となっています。

ブラウザが開くと、「hello.html」に記述した内容が表示されます。さらに、今回はPython側から呼び出していますので、コマンドプロンプト上で「hello.py」内で定義した関数が呼び出され、実行された処理が出力されました。

出力されましたが、「hello.py」内には「eel.say_hello_js(‘吉田さん’)」というコードも記述していましたが、これは実行されず、「hello.html」内で定義した関数が呼び出され、実行された処理が出力されていること「”Javascript World!”」が確認できました。

コメント

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