Thanks David! On Mon, Oct 26, 2009 at 9:13 AM, Sylvain Berger <sylvain.ber...@gmail.com> wrote: > Thanks a lot David! > > On Mon, Oct 26, 2009 at 5:23 AM, David Moulder <da...@thirstydevil.co.uk> > wrote: >> >> 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 <sylvain.ber...@gmail.com> >> wrote: >>> >>> Where can I find your version of pumpThread? >>> >>> Thanks >>> >>> On Tue, Sep 29, 2009 at 5:24 AM, David Moulder <da...@thirstydevil.co.uk> >>> 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 <vshingr...@gmail.com> 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 >>> >>> >> >> >> > > > > -- > "A pit would not be complete without a Freeman coming out of it." > The Vortigaunt > > > >
--~--~---------~--~----~------------~-------~--~----~ http://groups.google.com/group/python_inside_maya -~----------~----~----~----~------~----~------~--~---