我不确定这是否有关联,但一些谷歌搜索发现PyQt在玛雅内部非常流行。您可以尝试使用here或here(用源代码解释了here)通过Maya创建一个新的线程循环并在其中执行。似乎Maya包含了一个模块,用于设置新的线程对象,其中包含一个QApplication:def initializePumpThread():
global pumpedThread
global app
if pumpedThread == None:
app = QtGui.QApplication(sys.argv)
pumpedThread = threading.Thread(target = pumpQt, args = ())
pumpedThread.start()
然后设置一个函数来处理Qt事件:
^{pr2}$
您也可以使用wxPython执行类似的操作。(utils.executeDeferred是一个Maya函数。)请务必查看如何在wxpythonwiki上创建non-blocking GUI。而不是processEvents(),您需要设置一个事件循环,并检查(是否重命名?)中的“挂起”事件上述泵功能。(wxPython源代码有一个Python implementation的主循环)近似收益率()功能,但我不确定。在def pumpWx():
global app
def processor():
app.Yield(True)
while 1:
time.sleep(0.01)
utils.executeDeferred( processor )
def initializePumpThread():
global pumpedThread
global app
if pumpedThread == None:
app = wx.App(False)
pumpedThread = threading.Thread(target = pumpWx, args = ())
pumpedThread.start()
最好使用wxPython文档indicate SafeYield()。再一次,这似乎是第一步,但我不确定它是否会奏效,而不仅仅是可怕的崩溃。(有一些关于你想在wxPython mailing list上做什么的讨论,但是它来自wx之前的一些小版本。)在各种论坛上也有一些迹象表明这种技术会导致键盘输入出现问题。您也可以尝试:def processor():
while app.Pending(): app.Dispatch()
处理当前事件列表。在
祝你好运!在