Python
 Computer >> コンピューター >  >> プログラミング >> Python

Tkinterのイベントループと並行して独自のコードを実行する方法

Tkinterは、GUIベースのアプリケーションやゲームを開発するために広く利用されているPythonの標準ライブラリです。Tkinterはウィンドウやフレームを提供し、その中でプログラムや関数を他のウィジェット属性とともに実行できる環境を整えてくれます。

アプリケーション開発を進めていると、「メインウィンドウを動かしながら、別の処理やコードの変更も同時に実行したい」という場面によく出会います。そんなときに役立つのが、Tkinterが提供するコールバック機構です。after(時間, タスク)メソッドを使用すると、指定した時間(ミリ秒)が経過した後に任意の処理を実行でき、メインループを止めることなく処理を繰り返し走らせることが可能になります。

この記事では、メインウィンドウ(フレーム)を実行し続けながら、コンソールに0から9までの数値を出力するウィンドウを作成する例を紹介します。

サンプルコード

#必要なライブラリをインポート
from tkinter import *
from tkinter import messagebox

#tkinterのフレーム(ウィンドウ)のインスタンスを作成
win = Tk()

#ウィンドウサイズを設定
win.geometry("700x200")

#ボタン用の関数を定義
def some_task():
    for i in range(10):
        print(i)

        #関数を再帰的に呼び出す
        win.after(2000, some_task)

#ウィンドウを実行し続ける
win.after(2000, some_task)
win.mainloop()

コードのポイント

  • win.after(2000, some_task):2000ミリ秒(2秒)後にsome_task関数を呼び出すようスケジュールします。
  • 関数内で再度win.after()を呼び出すことで、処理が再帰的かつ定期的に実行され続けます。
  • mainloop()はイベントループを起動し、ウィンドウの表示やユーザー操作への応答を担当します。独自の処理はこのループを妨げることなく並行して動作します。

実行結果

上記のコードを実行すると、メインウィンドウが表示されると同時に、コンソールには0から9までの数値が2秒ごとに繰り返し出力され続けます。

0
1
2
3
4
5
6
7
8
9
…….

このようにafter()メソッドを活用すれば、GUIの応答性を保ちながら、バックグラウンドでの定期処理や状態更新などを簡単に実装できます。スレッドを使わずに非同期っぽい動作を実現できるため、Tkinterアプリケーションにおける定番テクニックの一つです。

  1. Google ColaboratoryでPythonコードを実行する方法を徹底解説

    Google Colaboratory(通称:Colab)は、面倒なセットアップ不要でブラウザ上ですぐに使える、無料のクラウド型Jupyterノートブック環境です。Googleのクラウド上でホストされており、Pythonスクリプトをクラウド環境で実行・テストしたい開発者のためにGoogleが提供・運用しています。本記事では、Google Colaboratoryの環境を立ち上げてから、実際にPythonコードを記述・実行するまでの一連の手順を、初心者の方にもわかりやすく解説します。1. Pythonノートブックを開くまず、Google Colabの公式サイト(https://colab.res

  2. 自分だけのQRコードを作る方法!Windows・Android・iPhone別の手順を解説

    近年、多くの企業やアプリが集客のためにQRコードを活用しています。QRコードは、詳細な説明を口頭で伝えなくても、情報を簡単に共有できる最も手軽な手段です。カメラ付きスマートフォンがほぼ普及したことで、ここ数年でその人気はさらに高まりました。しかし、「自分でQRコードを作りたいけれど、やり方がわからない」という方もまだ多くいらっしゃいます。この記事では、さまざまなプラットフォームでQRコードを作成する方法をわかりやすくご紹介します。QRコードとは?「QR」は「Quick Response(クイックレスポンス)」の略称です。QRコードは白黒の正方形パターンで構成されたマトリックス型コードで、スマー