Here it is...., This version has fixed our threading errors that occurred
where maya wouldn't close correctly and leave 1 mayapy thread open.
-Dave
###########################
from PyQt4 import QtCore, QtGui
import maya.utils as utils
import sys
import time
import threading
import maya.cmds as cmds
pumpedThread = None
app = None
gPump = True
def get_app():
global app
return app
def set_app(i_app):
global app
testAppInstance = QtCore.QCoreApplication.instance()
if testAppInstance:
app = testAppInstance
else:
app = i_app
def get_pt():
global pumpedThread
return pumpedThread
def set_pt(i_pt):
global pumpedThread
pumpedThread = i_pt
def pumpQt():
global app
global gPump
processorEv = threading.Event()
def processor():
app.processEvents()
processorEv.set()
while gPump:
utils.executeDeferred( processor )
processorEv.wait()
processorEv.clear()
time.sleep(0.01)
def killProcess():
global gPump
gPump = False
def killPumpThread():
if get_app():
get_app().closeAllWindows()
if get_pt():
while get_pt().isAlive():
killProcess()
set_pt(None)
set_app(None)
def initializePumpThread():
global gPump
gPump = True
if get_pt() == None:
set_app(QtGui.QApplication(sys.argv))
set_pt(threading.Thread( target = pumpQt, args = () ))
get_pt().start()
On Fri, Oct 23, 2009 at 8:41 PM, Sylvain Berger <[email protected]>wrote:
> Where can I find your version of pumpThread?
>
> Thanks
>
>
> On Tue, Sep 29, 2009 at 5:24 AM, David Moulder
> <[email protected]>wrote:
>
>> Ok, Here's and basic example with PyQT and a QListWidget...
>> Please note. This use's a modified pumpThread module. The default one
>> from the maya dev kit has given us lots of problems.
>> Thanks to some very clever people on this list we now have a working
>> pumpThread module that is heavily tested here at work.
>>
>> from PyQt4 import QtCore, QtGui
>> import pymel as pm
>> import pumpThread
>>
>> class ExampleUI(QtGui.QDialog):
>> def __init__(self, parent=None):
>> super(ExampleUI, self).__init__(parent)
>> # Set some basic properties on the UI
>> self.setWindowTitle('ExampleUI')
>> self.setObjectName("ExampleUI")
>> self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
>>
>> # Add a Layout and set it to the UI
>> self.mainLayout = QtGui.QVBoxLayout(self)
>> self.setLayout(self.mainLayout)
>>
>> # Add a Button and set some properties. Also add it to a layout.
>> self.RefreshButton = QtGui.QPushButton()
>> self.RefreshButton.setText("Refresh")
>> self.mainLayout.addWidget(self.RefreshButton)
>>
>> # Add a list and set it to the layout
>> self.SelectionList = QtGui.QListWidget()
>> self.SelectionList.setMinimumSize(250,250)
>> self.mainLayout.addWidget(self.SelectionList)
>>
>> # Connect the Refresh Button to a function to populate the list
>> using SIGNAL's
>> self.connect(self.RefreshButton, QtCore.SIGNAL("clicked()"),
>> self._RefreshButtonFunc)
>>
>> def _RefreshButtonFunc(self):
>> '''
>> Fill the list based on a maya selection
>> '''
>> oSel = pm.selected()
>> if oSel:
>> self.SelectionList.clear()
>> [self.SelectionList.addItem(s.name()) for s in oSel]
>> else:
>> self.SelectionList.clear()
>>
>> @staticmethod
>> def Display():
>> '''
>> calls the window. Typical PumpThread call
>> Use's a modified pumpThread that properly set's up the thread.
>> '''
>> # We need a global to stop python gc the UI
>> global mainWindow
>>
>> # We need pumpThread to make the UI responsive
>> pumpThread.initializePumpThread()
>> app = pumpThread.get_app()
>> if app:
>> # We can set the app to use a nice style
>> app.setStyle('Plastique')
>> mainWindow = ExampleUI()
>> mainWindow.show()
>>
>> ExampleUI.Display()
>>
>> I'll post our final pumpThread later today.
>>
>> -Dave
>>
>>
>>
>> On Tue, Sep 29, 2009 at 6:42 AM, floyd1510 <[email protected]> wrote:
>>
>>>
>>> Hello all,
>>>
>>> I have got PyQt up and running in Maya 2009. I was wondering if
>>> someone could guide me to a few examples, like adding a list of
>>> objects from maya into the QT listview or adding items dynamically to
>>> a combo box etc.
>>>
>>> I appreciate the help.
>>>
>>> Cheers,
>>> Vikram.
>>>
>>>
>>>
>>
>>
>>
>
>
> --
> "A pit would not be complete without a Freeman coming out of it."
> The Vortigaunt
>
>
> >
>
--~--~---------~--~----~------------~-------~--~----~
http://groups.google.com/group/python_inside_maya
-~----------~----~----~----~------~----~------~--~---