我想制作一个使用模式运算符的程序,以在Blender的Python中每0.01秒继续打印(“测试”)。
我也想在按Esc键时退出。
我该怎么办?
我编写并执行了以下代码,但是Blender冻结了。使用模态运算符似乎可以避免冻结,但是我不确定如何使用它。
import time
import threading
#A function that keeps executing print ("test")
def worker():
while True:
print("test")
def schedule(interval, f, wait=True):
base_time = time.time()
next_time = 0
while True:
t = threading.Thread(target=f)
t.start()
if wait:
t.join()
next_time = ((base_time - time.time()) % interval) or interval
time.sleep(next_time)
#Execute worker function every 0.01 second
schedule(0.01, worker, False)
在Blenders文本编辑器中,您会找到一个名为operator_modal_timer.py
的python模板,该模板可以按照您想要的方式工作。
对操作员的第一个调用是operator_modal_timer.py
方法,您可以在其中使用execute()
创建计时器。然后,在wm.event_timer_add
方法中,您响应计时器事件,或者在收到wm.event_timer_add
键事件时取消运算符。
如果将运算符放在modal()
中,则每次启动搅拌器时都可以启用它。