Hey John, Thanks a bunch for the recipe. Don't 100% understand it, but I'll look over it a bit more to get a better grasp. Pretty much just hacked it into what I was doing and all it working great.
Thanks again, Shawn On Wed, Apr 20, 2011 at 11:54 AM, John Patrick <[email protected]> wrote: > One thing I would worry about with that method is what happens in the case > of an exception somewhere in the UI's __init__ after creating the > scriptJob. This is overkill in this case (try/except would probably be just > fine), but I'm a fan of contextManagers for this type of 'i really need to > make sure something happens' behavior. Maybe something like this: > > from __future__ import with_statement > import maya.cmds as MC > from PyQt4 import QtGui, QtCore > > class ScriptJobCreator(object): > """A context manager for creating script jobs""" > def __init__(self): > self.id = None > > def createJob(self, *args, **kwargs): > self.id = MC.scriptJob(*args, **kwargs) > return self.id > > def killJob(self): > if self.id: > MC.scriptJob(kill=self.id) > self.id = None > > def __enter__(self): > return self > > def __exit__(self, exc_type, exc_val, exc_tb): > if exc_type is not None: > self.killJob() > > > class DummyDialog(QtGui.QDialog): > > def __init__(self, parent=None): > super(DummyDialog, self).__init__(parent=parent) > > with ScriptJobCreator() as sjc: > self.id = sjc.createJob(e=['SelectionChanged', > self.updateUI]) > > #THISWILLHOSEIT if uncommented. Give it a shot. > > layout = QtGui.QGridLayout() > dummyObj = QtGui.QPushButton("Dummy") > layout.addWidget(dummyObj,0,0) > self.setLayout(layout) > > > > > def updateUI(self): > print "I'm Updaing!" > > def closeEvent(self, e): > MC.scriptJob(kill=self.id) > super(DummyDialog, self).closeEvent(e) > > > def initUI(): > dialog = DummyDialog() > dialog.show() > > initUI() > > > On Wed, Apr 20, 2011 at 11:01 AM, Shawn Patapoff < > [email protected]> wrote: > >> Hey John, >> >> That's a good idea, I think I'll look into that. Seems way cleaner. >> Thanks. >> >> On Wed, Apr 20, 2011 at 11:00 AM, John Patrick <[email protected]>wrote: >> >>> Could you override the closeEvent in whatever QWidget destroys the UI, >>> and have it kill the scriptJob instead? >>> >>> >>> On Wed, Apr 20, 2011 at 10:40 AM, Shawn Patapoff < >>> [email protected]> wrote: >>> >>>> Hey, >>>> >>>> Has anyone found any other way to parent a scriptJob to a PyQt created >>>> GUI in maya without having to attach a maya created dummy object? >>>> >>>> This is what we're doing: >>>> dummyObj = cmds.helpLine(visible=False, width=100, >>>> parent='mainVerticalLayout') >>>> cmds.scriptJob( e=['SelectionChanged', self.updateUI], >>>> parent=dummyObj ) >>>> >>>> mainVerticalLayout being the PyQt object. If I parent the scriptJob >>>> directly to mainVerticalLayout maya doesn't seem to see it. >>>> >>>> Cheers, >>>> Shawn >>>> >>>> -- >>>> http://groups.google.com/group/python_inside_maya >>>> >>> >>> >>> >>> -- >>> John Patrick >>> 404-242-2675 >>> [email protected] >>> http://www.canyourigit.com >>> >>> -- >>> http://groups.google.com/group/python_inside_maya >>> >> >> -- >> http://groups.google.com/group/python_inside_maya >> > > > > -- > John Patrick > 404-242-2675 > [email protected] > http://www.canyourigit.com > > -- > http://groups.google.com/group/python_inside_maya > -- http://groups.google.com/group/python_inside_maya
