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 > > > > > --~--~---------~--~----~------------~-------~--~----~ http://groups.google.com/group/python_inside_maya -~----------~----~----~----~------~----~------~--~---