Houdini进度条

Houdini Python API中提供hou.InteruptableOperation类来处理进度条,还有一种进度条方案是通过PyQt来实现。此文档介绍一下官方提供的接口的使用方法。

如果只有一个循环任务可以使用下面的套路代码,将time.sleep(1)替换成任务代码。

import time
import hou

num = 5

with hou.InterruptableOperation("Performing Tasks", open_interrupt_dialog=True) as operation:

    for i in range(num):
        # Perform task here.
        time.sleep(1)

        # Update operation progress.
        percent = float(i) / float(num)
        operation.updateProgress(percent)

如果有两个循环嵌套的子任务,可以用下面的套路代码模板来写,将time.sleep(1)替换成任务代码即可。

import time
import hou

taskNum = 5
subTaskNum = 5

with hou.InterruptableOperation("Performing", "Performing Tasks", open_interrupt_dialog=True) as operation:

    for i in range(taskNum):
        # Update long operation progress.
        longPercent = float(i) / float(taskNum)
        operation.updateLongProgress(longPercent, long_op_status="Performing Tasks %d%%" % (longPercent * 100))

        # Start the sub-operation.
        with hou.InterruptableOperation("Performing Task %i" % i) as suboperation:
            for j in range(subTaskNum):
                # Update sub-operation progress.
                percent = float(j) / float(subTaskNum)
                suboperation.updateProgress(percent)

                # Perform subtask here.
                time.sleep(1)