Никогда не используйте time.sleep()
в главном потоке GUI, эта функция блокирует выполнение GUI, поэтому вы получаете такое поведение, в вашем конкретном случае вы можете использовать QTimeLine
:
def onframeChanged(val):
msg = str(val)
QgsMessageLog.logMessage(msg, tag="Validating", level=QgsMessageLog.INFO)
n = 9
self.timeline = QtCore.QTimeLine(n*1000)
self.timeline.setFrameRange(0, n)
self.timeline.frameChanged.connect(onframeChanged)
self.timeline.finished.connect(self.timeline.deleteLater)
self.timeline.start()
Если вы хотите, чтобы задача выполнялась периодически, вы можете использовать QTimer
:
def onTimeout():
msg = QtCore.QDateTime.currentDateTime().toString()
QgsMessageLog.logMessage(msg, tag="Validating", level=QgsMessageLog.INFO)
self.timer = QtCore.QTimer(interval=1000)
self.timer.timeout.connect(onTimeout)
self.timer.start()