Pythonで作るGUI付き翻訳支援アプリの作成-Part3:main.pyの作成-
main.pyの作成
main.pyには、アプリのエントリーポイントとしての役割とイベント処理をコーディングしていきます。main.pyに実装させたい機能は、主に3つです。
設定ファイル(config.ini)の読み込み
最初に表示するウィンドウの読み込み
各種イベント処理の実装
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.pyとdeepl.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_windowとconfig_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()
以上のようにmain.pyの骨格を作成して、後ほど具体的なイベント処理などを肉付けしていきます。少し長くなってしまいましたので、レイアウトの作成は次回にしたいと思います。
記事が参考になりましたら、❤️を押していただけると励みになります😊