Pythonでは、GUIアプリケーションを作成する際にTkinterというライブラリがよく使用されます。しかし、Tkinterで作成したGUIアプリケーションでは、一つの処理が終了するまで他の処理が反応しないという問題があります。これはPythonが逐次処理形式であるためです。
この問題を解決するためには、Pythonの並列処理機能を利用することが考えられます。Pythonの並列処理は、threading
というモジュールを用いて実現できます。このモジュールを用いることで、一つの処理が終了するのを待たずに、別の処理を同時に実行することが可能になります。
以下に、PythonとTkinterを用いて並列処理を実装する基本的なコードを示します。
import tkinter as tk
import threading
import time
def start():
thread = threading.Thread(target=count)
thread.start()
def count():
global flg
i = 0
while True:
if flg == False:
print("動作を途中停止します。")
flg = True
break
else:
print("カウント", i)
time.sleep(2)
i += 1
def stop():
global flg
flg = False
root = tk.Tk()
flg = True
btn1 = tk.Button(text="開始", command=start)
btn1.grid(row=0, column=0)
btn2 = tk.Button(text="停止", command=stop)
btn2.grid(row=1, column=0)
root.mainloop()
このコードでは、start
関数を呼び出すと新しいスレッドが生成され、そのスレッド上でcount
関数が実行されます。そして、stop
関数を呼び出すと、フラグがFalse
になり、count
関数のループから抜け出すようになっています。このようにして、GUIに強制停止ボタンを実装することができます。
以上がPythonとTkinterを用いた並列処理の基本的な実装方法です。この知識を活用して、より高度なGUIアプリケーションを作成してみてください。.