PythonのGUIライブラリであるPyQtを使用する際、time.sleep
のような一時停止処理を行いたい場合があります。しかし、time.sleep
をそのまま使用すると、GUIのイベントループが停止してしまい、GUIがフリーズしてしまいます。
そのため、PyQtではQTimer
クラスを使用して一時停止を実現します。具体的には、QTimer.singleShot
メソッドを使用して一定時間後に特定の関数を実行するように設定します。
また、PyQtのテストモジュールであるQtTest
には、time.sleep
と同様の機能を持つqWait
メソッドがあります。このメソッドを使用すると、GUIがレスポンシブなまま一定時間処理を停止することができます。
以下に、QTimer
とQtTest.qWait
を使用した一時停止処理の例を示します。
from PyQt4 import QtCore, QtTest
def num(self):
for i in range(1,999):
print(i)
QtTest.QTest.qWait(1000) # 1秒待つ
def testSleep(self):
QtCore.QTimer.singleShot(2000, self.num) # 2秒後にnum関数を実行
このように、PyQtではtime.sleep
の代わりにQTimer
やQtTest.qWait
を使用して一時停止処理を行います。これにより、GUIがフリーズすることなく、一定時間の待機や遅延実行を実現することができます。.