PythonのGUIライブラリであるTkinterとマルチスレッドを組み合わせることで、より応答性の高いアプリケーションを作成することが可能です。
マルチスレッドとは
マルチスレッドはプログラムを高速化したり同時処理を行ったりする上で重要な仕組みになります。特にTkinterではユーザー操作時のアプリの反応を良くしたりすることもできます。
Pythonでのマルチスレッドの使い方
Pythonではマルチスレッドをthreading
をimportすることで利用することができます。スレッドはthreading.Thread
クラスのコンストラクタを実行することより生成することができます。
import threading
def func():
for j in range(100):
print("sub : " + str(j))
thread1 = threading.Thread(target=func)
thread1.start()
このコードでは、threading.Thread
のインスタンスを作成し、そのstart
メソッドを呼び出すことで新しいスレッドを開始しています。
Tkinterとマルチスレッド
Tkinterでは、GUIの応答性を向上させるためにマルチスレッドが有用です。以下に、Tkinterでのマルチスレッドの使用例を示します。
import tkinter as tk
import threading
import time
class Application(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.pack()
self.create_widgets()
def create_widgets(self):
self.hi_there = tk.Button(self)
self.hi_there["text"] = "Start"
self.hi_there["command"] = self.start_new_thread
self.hi_there.pack(side="top")
def start_new_thread(self):
threading.Thread(target=self.say_hi).start()
def say_hi(self):
for i in range(10):
print(i)
time.sleep(1)
root = tk.Tk()
app = Application(master=root)
app.mainloop()
このコードでは、ボタンがクリックされると新しいスレッドが開始され、そのスレッドでsay_hi
関数が実行されます。これにより、GUIはスレッドの処理が終了するのを待つことなく、他のイベントに応答することができます。
以上がPythonとTkinterを使ったマルチスレッドの基本的な使い方となります。これを応用することで、より複雑なマルチスレッドのアプリケーションを作成することが可能です。