Maya GUI界面的更新一直比较头疼,问了下ChatGPT说可以通过定时器来实现Tick函数,于是试了一下。
import maya.cmds as cmds
import threading
def Main(*args):
win = cmds.window("win", w=260, h=70, t="Tools")
cmds.columnLayout()
cmds.text("Test Gui Update")
cmds.window(win, e=True, w=260, h=70)
GuiTick(str(win)) #开启定时器
cmds.showWindow(win)
def GuiTick(win):
print("Tick!")
def Exec(win): #这里面内容执行在Maya主线程,才能正常调用API
if cmds.window(win, exists = True):
print("your code!")
threading.Timer(1.0, GuiTick, args=[win]).start() #继续计时器迭代
maya.utils.executeInMainThreadWithResult(Exec, win) #让函数内代码执行在主线程
Main()