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 -~----------~----~----~----~------~----~------~--~---