Thanks for your help, you cleared some things up for me.  I had used
this self.ui.blah approach because I saw that at a company I worked
for, it's also the stated 'single inheritance' approach in the QT docs
here: http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/designer.html

In your example I would get this:
TypeError: ('Wrong base class of toplevel widget', (<class
'__main__.skinWrangler'>, 'QDialog'))

So I made it a QDialog and added this string from the docs:

def __init__(self):
                >>>QtGui.QDialog.__init__(self)

Now it works fine! (the onClose)

CE

On Mon, Apr 23, 2012 at 3:57 AM, Justin Israel <justinisr...@gmail.com> wrote:
> You have some issues with the way you are loading and using your UI.
> Notice that you are loading the UI into self.ui, but then implementing
> events on self. Your end up calling self.ui.show() from your init which is
> showing a completely different object than your main window class.
>
> Normally, I would recommend either precompiling your UIC via pyuic4, or,
> loading it in on the fly and then inheriting from it:
>
> class SkinWrangler(QtGui.QMainWindow, Ui_skinWrangler):
>     def __init__(self, parent=None):
>         super(SkinWrangler, self).__init__(parent)
>         self.setupUi(self)
>
> There are variations of that approach, where some people will store the ui
> as an object:
> self.ui = Ui_skinWrangler()
> self.ui.setupUi(self)
>
> The immediate fix for how you are using loadUi is to tell it to set it up on
> your main window (similar to what setupUi does):
>
> class skinWrangler(QtGui.QMainWindow):
>     def __init__(self):
>
>         # other stuff here #
>
>         uiPath = "/path/to/ui/test.ui"
>         uic.loadUi(uiPath, self)
>
>     def closeEvent(self, e):
>         print 'CLOSED'
>
> win = skinWrangler()
> win.show()  # instead of win.ui.show()
>
> Don't call show() from your init. It should be called by the entry-point
> function that is launching your UI.
> Now you will see your closeEvent get called when the window is closed.
> The reason you were seeing it look like it was occurring during init each
> time, is that what it was really doing was deleting your previous instance
> with cmds.deleteUI() which triggers the closeEvent for that previous widget.
>
>
>
>
> On Sun, Apr 22, 2012 at 5:21 PM, Christopher Evans <chris.ev...@gmail.com>
> wrote:
>>
>> http://pastebin.com/PKEyg0FJ
>>
>> On Mon, Apr 23, 2012 at 1:11 AM, Justin Israel <justinisr...@gmail.com>
>> wrote:
>> > Post your latest code? Maybe you have a strange indent. No idea why the
>> > closeEvent would happen right away unless maybe you are letting it get
>> > garbage collected immediately.
>> >
>> >
>> > On Sun, Apr 22, 2012 at 3:51 PM, Christopher Evans
>> > <chris.ev...@gmail.com>
>> > wrote:
>> >>
>> >> If I pipe that 'name' into the 'p' parent flag of the sciptjob, it
>> >> lives on after i close the window.  Second, integrating your code, the
>> >> closeEvent runs at the time I execute the script and the window opens
>> >> (weird?) it doesn't run on close.
>> >>
>> >> On Sat, Apr 21, 2012 at 5:16 AM, John Patrick <jspatr...@gmail.com>
>> >> wrote:
>> >> > You need to set the object name to be able to find it in Maya:
>> >> > http://pastebin.com/T4tJ4GjE
>> >> >
>> >> >
>> >> > On Fri, Apr 20, 2012 at 5:56 PM, Christopher Evans
>> >> > <chris.ev...@gmail.com>
>> >> > wrote:
>> >> >>
>> >> >> class skinWrangler(QtGui.QMainWindow):
>> >> >>    def __init__(self):
>> >> >>                QtGui.QMainWindow.__init__(self)
>> >> >>
>> >> >> Looks like I am creating the window differently than you guys.
>> >> >>
>> >> >> I was going to give this skinning tool away free anyways, here's
>> >> >> that
>> >> >> few surrounding chunks of code: http://pastebin.com/5tJfvSB7
>> >> >>
>> >> >> Thanks,
>> >> >>
>> >> >> CE
>> >> >>
>> >> >> On Sat, Apr 21, 2012 at 2:06 AM, Justin Israel
>> >> >> <justinisr...@gmail.com>
>> >> >> wrote:
>> >> >> > I hit send to fast. Ignore that silly line at the end of my last
>> >> >> > message
>> >> >> > :-)
>> >> >> >
>> >> >> >
>> >> >> > On Fri, Apr 20, 2012 at 5:05 PM, Justin Israel
>> >> >> > <justinisr...@gmail.com>
>> >> >> > wrote:
>> >> >> >>
>> >> >> >> On Fri, Apr 20, 2012 at 4:25 PM, Christopher Evans
>> >> >> >> <chris.ev...@gmail.com>
>> >> >> >> wrote:
>> >> >> >>>
>> >> >> >>> First lemme start with: Is it possible to use closeEvent() in
>> >> >> >>> Maya?
>> >> >> >>> I
>> >> >> >>> cannot get that to work.
>> >> >> >>
>> >> >> >>
>> >> >> >> Can you be more specific about what is giving you trouble?
>> >> >> >> This works just fine:
>> >> >> >>
>> >> >> >> class Window(QtGui.QMainWindow):
>> >> >> >>     def closeEvent(self, e):
>> >> >> >>         print "HIT"
>> >> >> >>
>> >> >> >>>
>> >> >> >>>
>> >> >> >>> Can someone tell me how to feed a custom pyqt mainWindow tool
>> >> >> >>> into
>> >> >> >>> the
>> >> >> >>> parent flag of a scriptjob?
>> >> >> >>>
>> >> >> >>>
>> >> >> >>> I have been looking all over teh internets, I think it involves
>> >> >> >>> SIP
>> >> >> >>> somehow.. all examples I have seen show QDialog, or mel/python
>> >> >> >>> commands UIs.
>> >> >> >>
>> >> >> >>
>> >> >> >> The part about getting the maya UI name from a pyqt widget has
>> >> >> >> been
>> >> >> >> asked
>> >> >> >> before.
>> >> >> >> It goes like this:
>> >> >> >>
>> >> >> >> import sip
>> >> >> >> import maya.OpenMayaUI as mui
>> >> >> >>
>> >> >> >> win = # some PyQt widget
>> >> >> >> mayaName = mui.MQtUtil.fullName(long(sip.unwrapinstance(win)))
>> >> >> >>
>> >> >> >> You can also check out
>> >> >> >>>
>> >> >> >>>
>> >> >> >>> Thanks,
>> >> >> >>>
>> >> >> >>> --
>> >> >> >>> CE
>> >> >> >>>
>> >> >> >>> --
>> >> >> >>> view archives: http://groups.google.com/group/python_inside_maya
>> >> >> >>> change your subscription settings:
>> >> >> >>> http://groups.google.com/group/python_inside_maya/subscribe
>> >> >> >>
>> >> >> >>
>> >> >> >
>> >> >> > --
>> >> >> > view archives: http://groups.google.com/group/python_inside_maya
>> >> >> > change your subscription settings:
>> >> >> > http://groups.google.com/group/python_inside_maya/subscribe
>> >> >>
>> >> >>
>> >> >>
>> >> >> --
>> >> >> CE
>> >> >>
>> >> >> --
>> >> >> view archives: http://groups.google.com/group/python_inside_maya
>> >> >> change your subscription settings:
>> >> >> http://groups.google.com/group/python_inside_maya/subscribe
>> >> >
>> >> >
>> >> >
>> >> >
>> >> > --
>> >> > John Patrick
>> >> > 404-242-2675
>> >> > jspatr...@gmail.com
>> >> > http://www.canyourigit.com
>> >> >
>> >> > --
>> >> > view archives: http://groups.google.com/group/python_inside_maya
>> >> > change your subscription settings:
>> >> > http://groups.google.com/group/python_inside_maya/subscribe
>> >>
>> >>
>> >>
>> >> --
>> >> CE
>> >>
>> >> --
>> >> view archives: http://groups.google.com/group/python_inside_maya
>> >> change your subscription settings:
>> >> http://groups.google.com/group/python_inside_maya/subscribe
>> >
>> >
>> > --
>> > view archives: http://groups.google.com/group/python_inside_maya
>> > change your subscription settings:
>> > http://groups.google.com/group/python_inside_maya/subscribe
>>
>>
>>
>> --
>> CE
>>
>> --
>> view archives: http://groups.google.com/group/python_inside_maya
>> change your subscription settings:
>> http://groups.google.com/group/python_inside_maya/subscribe
>
>
> --
> view archives: http://groups.google.com/group/python_inside_maya
> change your subscription settings:
> http://groups.google.com/group/python_inside_maya/subscribe



-- 
CE

-- 
view archives: http://groups.google.com/group/python_inside_maya
change your subscription settings: 
http://groups.google.com/group/python_inside_maya/subscribe

Reply via email to