見出し画像

Pythonで作るGUI付き翻訳支援アプリの作成-Part3:main.pyの作成-

main.pyの作成

main.pyには、アプリのエントリーポイントとしての役割とイベント処理をコーディングしていきます。main.pyに実装させたい機能は、主に3つです。

  1. 設定ファイル(config.ini)の読み込み

  2. 最初に表示するウィンドウの読み込み

  3. 各種イベント処理の実装

main.pyの設計

それでは、main.pyの設計に移ります。設計というと難しいですが、プログラムのおおまかな流れ、土台作りと捉えて下さい。この時点では、関数などの中身は空っぽで構いません。必要な処理をイメージして、関数名やイベント処理に必要なウィジェットのキー名などを決めてしまいます。コードは以下の通りとなります。

import PySimpleGUI as sg
import configparser
import gui
import deepl

def main():
    # 1.設定ファイルの読み込み。
    config = configparser.ConfigParser()
    config.read('config.ini')

    # 2.最初に表示するウィンドウを指定する。
    window = gui.main_window()
    # deepLの使用量を取得しウィンドウに表示させる。
    gui.get_usage(window)

    # 3.各種イベント処理
    while True:
        event, values = window.read()

        if event == '-run_deepl-':            
       pass

        if event == '-config-':
            pass

        if event == '-config_update-':
            pass

        if event == sg.WIN_CLOSED or event == "Exit":
            break

    window.close()


if __name__ == '__main__':
    main()

まず最初に必要なライブラリや自作ファイルをインポートします。今回もGUIライブラリにはPySimpleGUIを使用します。また、設定ファイル(.ini)を扱いますのでPython標準モジュールであるConfigParserをインポートします。まだ作成していませんが、gui.pydeepl.pyという自作モジュールもここでインポートします。

import PySimpleGUI as sg
import configparser
import gui
import deepl

def main()の中に実際の処理をコーディングし、if __name__ == '__main__':でプログラム実行時にmain関数を呼び出します。

def main():
    pass


if __name__ == '__main__':
    main()

1. 設定ファイルの読み込み

まずは、configインスタンスをconfigparser.ConfigParser()で作成します。次に設定ファイル(config.ini)をconfigインスタンスに読み込みます。このようにすると、config.ini内の各項目に辞書のようにアクセス出来るようになります。例えば、config[‘deepL’]とするとconfig.iniファイル内のdeepLセクションの情報にアクセス出来ます。config.iniは、後ほど作成します。

    # 1.設定ファイルの読み込み。
    config = configparser.ConfigParser()
    config.read('config.ini')

2. 最初に表示するウィンドウの読み込み

プログラムが実行された時に、最初に表示させるウィンドウを指定します。まだ作成していませんが、main_windowを表示させる予定です。今回は、main_windowconfig_windowの2つの画面を作成します。それぞれをgui.pyにコーディングしていきますので、window = gui.main_window()として読み込みましょう。次に、メインウィンドウにはdeeplの使用量も表示させたいのでget_usege()関数をgui.py内に作成します。この関数に現在のwindowを引数として渡す事で画面を更新して使用量を表示させます。

    # 2.最初に表示するウィンドウの読み込み。
    window = gui.main_window()
    # deepLの使用量を取得しウィンドウに表示させる。
    gui.get_usage(window)

3. 各種イベント処理の実装

各種イベント処理をここに実装していきます。今の時点では、中身は空っぽですのでそれぞれpassを記述しています。最初のイベントは、図1の⑤DeepL翻訳&逆翻訳実行ボタン key = '-run_deepl-'がクリックされた際のイベントを設定します。次のイベントは、図1の⑦のDeepL設定画面への遷移ボタンkey = '-config-'が押された際のイベントです。そして、画面は変わりますがDeepL設定画面の図1の⑨更新ボタンkey = '-config_update-'が押された際のイベント処理を設定します。最後のイベントevent == sg.WIN_CLOSED or event == "Exit"は閉じるボタンが押された際にアプリを終了します。

    # 3.各種イベント処理
    while True:
        event, values = window.read()

        if event == '-run_deepl-':            
       pass

        if event == '-config-':
            pass

        if event == '-config_update-':
            pass

        if event == sg.WIN_CLOSED or event == "Exit":
            break

    window.close()
図1

以上のようにmain.pyの骨格を作成して、後ほど具体的なイベント処理などを肉付けしていきます。少し長くなってしまいましたので、レイアウトの作成は次回にしたいと思います。

記事が参考になりましたら、❤️を押していただけると励みになります😊


いいなと思ったら応援しよう!