我不确定这是否有关联,但一些谷歌搜索发现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()

处理当前事件列表。在

祝你好运!在

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐