Wow!

i've get this works !
instead of using QtGui.QApplication.activeWindow()
i've put QtGui.QApplication.desktop()

and it seems that the new Window is seen as a separated window
by the Os and Nuke, and there is no more crash when exiting nuke!

hope you can confirm this workaround ;)

import PySide.QtCore as QtCore
import PySide.QtGui as QtGui

class TestMainWindow(QtGui.QDialog):
   def __init__(self,parent=QtGui.QApplication.desktop()):
       super(TestMainWindow, self).__init__(parent)

       self.hbox=QtGui.QHBoxLayout()
       self.button=QtGui.QPushButton("TEST")
       self.hbox.addWidget(self.button)
       self.setLayout(self.hbox)
       self.setWindowTitle("TestMainWindow")

wnd=TestMainWindow()
wnd.show()

On Wed, Apr 4, 2012 at 9:49 AM, Matthieu Cadet <[email protected]> wrote:
> I'm also on a Windows 7 Os, and Nuke 6.3v5
>
> @Nathan, when i set self.setWindowFlags(QtCore.Qt.Window) as you
> mentionned, on Windows it seems to has same effect if i don't put this
> line...
> the window created seems to be a separated window within Nuke, but the
> OS doesn't see it as a separate window ( that's the problem for me for
> the moment )
>
> @Ivan, i've also tried your solution, by using a QMainWindow as a
> container of the QDialog but it's also the same effect as using just
> the QDialog window.
>
> i also get this this result from your QApplication calls
> from PySide import QtCore, QtGui
> app = QtGui.QApplication
> print app.instance(), app.activeWindow()
> # Result:
> <PySide.QtCore.QCoreApplication object at 0x000000004E48A408>
> <PySide.QtGui.QWidget object at 0x00000000714C8A48>
>
> and i also get response from Nuke Support:
>
> "
> Since this has crashed nuke I have logged this as a bug under:
>
> Bug 26471 - QDialog crashes nuke if left open when closing nuke
>
> This has notified engineering and if they come back with a workaround I will
> let you know.
> "
>
> that's all for the moment... snif...
> thanks all of you for your contributions :)
>
> On Wed, Apr 4, 2012 at 4:43 AM, Brogan Ross <[email protected]> wrote:
>> instance() returns a QtCore.QCoreApplication object
>> and activeWindow() returns a QtGui.QWidget
>>
>>
>>
>>
>>
>>
>>
>>
>> On Tue, Apr 3, 2012 at 7:02 PM, Ivan Busquets <[email protected]>
>> wrote:
>>>
>>> Ah, that might be the problem right there.
>>>
>>> Don't have access to other QApplication methods at hand, but do you
>>> get anything from the following commands? Or just 'None' again?
>>>
>>> from PySide import QtCore, QtGui
>>> app = QtGui.QApplication
>>> print app.instance(), app.activeWindow()
>>>
>>>
>>> On Tue, Apr 3, 2012 at 6:51 PM, Brogan Ross <[email protected]> wrote:
>>> > Actually, it returns blank :(
>>> >
>>> >
>>> >
>>> >
>>> >
>>> > On Tue, Apr 3, 2012 at 6:45 PM, Ivan Busquets <[email protected]>
>>> > wrote:
>>> >>
>>> >> Sorry to hear that didn't work for you either
>>> >>
>>> >> Not an expert on PyQt/PySide (and much less on Windows :p), but if
>>> >> you're getting a segfault with the above example, it sounds like the
>>> >> parent of your MainWindow widget is not being set correctly.
>>> >>
>>> >> What do you get if you run this? (You should get the title of your
>>> >> main Nuke window)
>>> >>
>>> >> from PySide import QtCore, QtGui
>>> >> app = QtGui.QApplication.activeWindow()
>>> >> print app.windowTitle()
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> On Tue, Apr 3, 2012 at 6:40 PM, Brogan Ross <[email protected]>
>>> >> wrote:
>>> >> > Oh also, sadly we are in a Windows facility and the Qt.Qindow doesn't
>>> >> > seem
>>> >> > to promote the widget.
>>> >> > And for "In the background", I mean I'd like the window to display
>>> >> > but
>>> >> > then
>>> >> > if you click back in the Nuke interface, I'd like the window go
>>> >> > behind
>>> >> > nuke.
>>> >> >  If I use your example it does that, but I get the crash at close.
>>> >> >
>>> >> >
>>> >> >
>>> >> >
>>> >> > On Tue, Apr 3, 2012 at 6:17 PM, Brogan Ross <[email protected]>
>>> >> > wrote:
>>> >> >>
>>> >> >> For a second there I thought this was gonna work.  Well, I mean it
>>> >> >> does.
>>> >> >>  It creates a separate window, but it brings me back to the original
>>> >> >> issue
>>> >> >> of Nuke crashing if the window is still open when closing Nuke.
>>> >> >> I'm going to try going make to setting the global variable and see
>>> >> >> if I
>>> >> >> can get that working with an onClose callback.
>>> >> >>
>>> >> >>
>>> >> >>
>>> >> >>
>>> >> >>
>>> >> >>
>>> >> >>
>>> >> >>
>>> >> >>
>>> >> >> On Tue, Apr 3, 2012 at 3:03 PM, Ivan Busquets
>>> >> >> <[email protected]>
>>> >> >> wrote:
>>> >> >>>
>>> >> >>> When you say you want it to be "in the background", do you mean
>>> >> >>> that
>>> >> >>> it's stealing focus from the parent's window when it's created? Or
>>> >> >>> that the OS doesn't see it as a separate window?
>>> >> >>>
>>> >> >>> As Nathan said, setting the Qt.Window flag on your Dialog/Widget
>>> >> >>> "should" promote it to its own Window, but I've only tried that in
>>> >> >>> Linux, so I don't know if this is any different on other platforms.
>>> >> >>>
>>> >> >>> As a workaround, if you already have your Widget/Dialog class, you
>>> >> >>> could just make a QMainWindow class as a container, and add your
>>> >> >>> widget to it. I've done this before to re-use a QWidget in
>>> >> >>> different
>>> >> >>> places, for example.
>>> >> >>>
>>> >> >>> The example below is just a quick test, but it might give you an
>>> >> >>> idea:
>>> >> >>>
>>> >> >>> from PySide import QtCore, QtGui
>>> >> >>>
>>> >> >>> class NewWindow(QtGui.QMainWindow):     # This is your MainWindow
>>> >> >>> container
>>> >> >>>    def __init__(self, parent=None):
>>> >> >>>        super(NewWindow, self).__init__(parent)
>>> >> >>>        self.ownWidget = myWidget()    # Add your own widget to this
>>> >> >>> window
>>> >> >>>        self.setCentralWidget(self.ownWidget)
>>> >> >>>
>>> >> >>> class myWidget(QtGui.QDialog):
>>> >> >>>  def __init__(self, parent=None):
>>> >> >>>      super(myWidget, self).__init__(parent)
>>> >> >>>      self.setLayout(QtGui.QVBoxLayout())
>>> >> >>>      self.textlabel = QtGui.QLabel("some text")
>>> >> >>>      self.layout().addWidget(self.textlabel)
>>> >> >>>
>>> >> >>> f = NewWindow(QtGui.QApplication.activeWindow())    # Create a
>>> >> >>> NewWindow instance as a child of Nuke
>>> >> >>> f.show()
>>> >> >>>
>>> >> >>>
>>> >> >>> Hope that helps.
>>> >> >>>
>>> >> >>> Cheers,
>>> >> >>> Ivan
>>> >> >>>
>>> >> >>> On Tue, Apr 3, 2012 at 1:52 PM, Brogan Ross <[email protected]>
>>> >> >>> wrote:
>>> >> >>> > Nathan, that doesn't seem to work for me.  It still leaves the
>>> >> >>> > window
>>> >> >>> > on top
>>> >> >>> > of Nuke.
>>> >> >>> >
>>> >> >>> >
>>> >> >>> >
>>> >> >>> >
>>> >> >>> >
>>> >> >>> >
>>> >> >>> >
>>> >> >>> >
>>> >> >>> > On Tue, Apr 3, 2012 at 10:02 AM, Nathan Rusch
>>> >> >>> > <[email protected]>
>>> >> >>> > wrote:
>>> >> >>> >>
>>> >> >>> >> As I mentioned last night (and after testing to confirm that it
>>> >> >>> >> works),
>>> >> >>> >> you set the Qt.Window flag on your Widget or Dialog (works for
>>> >> >>> >> either).
>>> >> >>> >>
>>> >> >>> >>
>>> >> >>> >> from PySide import QtCore, QtGui
>>> >> >>> >>
>>> >> >>> >> class ExtraNukeWindow(QtGui.QDialog):
>>> >> >>> >>   def __init__(self, parent=QtGui.QApplication.activeWindow()):
>>> >> >>> >>       super(ExtraNukeWindow, self).__init__(parent)
>>> >> >>> >>       self.setWindowFlags(QtCore.Qt.Window)
>>> >> >>> >>
>>> >> >>> >> ExtraNukeWindow().show()
>>> >> >>> >>
>>> >> >>> >>
>>> >> >>> >> -Nathan
>>> >> >>> >>
>>> >> >>> >> -----Original Message----- From: Matthieu Cadet
>>> >> >>> >> Sent: Tuesday, April 03, 2012 9:02 AM
>>> >> >>> >>
>>> >> >>> >> To: Nuke Python discussion
>>> >> >>> >> Subject: Re: [Nuke-python] PySide window makes nuke crash on
>>> >> >>> >> close
>>> >> >>> >>
>>> >> >>> >> @Johan, yep i've made made a mistake in my code sample, normally
>>> >> >>> >> i
>>> >> >>> >> always set parent=None in the __init__\
>>> >> >>> >> but if i put like you say :
>>> >> >>> >>
>>> >> >>> >> def __init__(self,parent=QtGui.QApplication.activeWindow())
>>> >> >>> >>
>>> >> >>> >> Nuke don't crashs!!!! this is exactly what i want, but..., when
>>> >> >>> >> set
>>> >> >>> >> the parent to Nuke,
>>> >> >>> >> the QDialog is now part of Nuke window, it's no more a separated
>>> >> >>> >> window ( is not listed
>>> >> >>> >> in the taskbar in Windows, and cannot be accessed by Alt+Tab
>>> >> >>> >> switch
>>> >> >>> >> )
>>> >> >>> >>
>>> >> >>> >> @Brogan, have you found any trick for doing what you want for
>>> >> >>> >> your
>>> >> >>> >> custom PySide window?
>>> >> >>> >>
>>> >> >>> >> On Tue, Apr 3, 2012 at 7:05 AM, Nathan Rusch
>>> >> >>> >> <[email protected]>
>>> >> >>> >> wrote:
>>> >> >>> >>>
>>> >> >>> >>> I’m not in front of any functional PySide installs at the
>>> >> >>> >>> moment,
>>> >> >>> >>> but
>>> >> >>> >>> if
>>> >> >>> >>> I
>>> >> >>> >>> remember correctly, you just need to call
>>> >> >>> >>> self.setWindowFlags(Qt.Window)
>>> >> >>> >>> in
>>> >> >>> >>> your QDialog’s __init__.
>>> >> >>> >>>
>>> >> >>> >>> -Nathan
>>> >> >>> >>>
>>> >> >>> >>>
>>> >> >>> >>> From: Brogan Ross
>>> >> >>> >>> Sent: Monday, April 02, 2012 9:44 PM
>>> >> >>> >>> To: Nuke Python discussion
>>> >> >>> >>> Subject: Re: [Nuke-python] PySide window makes nuke crash on
>>> >> >>> >>> close
>>> >> >>> >>>
>>> >> >>> >>> I'm in the same boat as, Matthieu.  I don't want the dialog to
>>> >> >>> >>> lock
>>> >> >>> >>> up
>>> >> >>> >>> Nuke.  I need it to just appear and be available if needed.
>>> >> >>> >>>
>>> >> >>> >>> I was doing things slightly different than Matthieu
>>> >> >>> >>>
>>> >> >>> >>> class TestWindow(QtGui.QWidget):
>>> >> >>> >>>    def __init__(self, parent=None):
>>> >> >>> >>>        QtGui.QWidget.__init__(self, parent)
>>> >> >>> >>>        self.setLayout(QtGui.QVBoxLayout())
>>> >> >>> >>>        self.line = QtGui.QLabel("some text")
>>> >> >>> >>>        self.layout()
>>> >> >>> >>>
>>> >> >>> >>> tw = TestWindow()
>>> >> >>> >>> tw.show()
>>> >> >>> >>>
>>> >> >>> >>>
>>> >> >>> >>> However, if I switch it over to QDialog and use activeWindow()
>>> >> >>> >>> as
>>> >> >>> >>> a
>>> >> >>> >>> Johan
>>> >> >>> >>> said, everything works fine, no crashing.  With one exception.
>>> >> >>> >>>  The
>>> >> >>> >>> window
>>> >> >>> >>> stays on top of Nuke and I want it to be able to be in the
>>> >> >>> >>> background.
>>> >> >>> >>>
>>> >> >>> >>> Sorry, I'm very new to PyQt/PySide.
>>> >> >>> >>>
>>> >> >>> >>>
>>> >> >>> >>> Thanks
>>> >> >>> >>>
>>> >> >>> >>>
>>> >> >>> >>>
>>> >> >>> >>>
>>> >> >>> >>>
>>> >> >>> >>>
>>> >> >>> >>> ________________________________
>>> >> >>> >>> _______________________________________________
>>> >> >>> >>> Nuke-python mailing list
>>> >> >>> >>> [email protected],
>>> >> >>> >>> http://forums.thefoundry.co.uk/
>>> >> >>> >>>
>>> >> >>> >>>
>>> >> >>> >>> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
>>> >> >>> >>>
>>> >> >>> >>>
>>> >> >>> >>> _______________________________________________
>>> >> >>> >>> Nuke-python mailing list
>>> >> >>> >>> [email protected],
>>> >> >>> >>> http://forums.thefoundry.co.uk/
>>> >> >>> >>>
>>> >> >>> >>>
>>> >> >>> >>> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
>>> >> >>> >>>
>>> >> >>> >>
>>> >> >>> >>
>>> >> >>> >>
>>> >> >>> >> --
>>> >> >>> >> Matthieu Cadet
>>> >> >>> >> Compositor Artist & TD,
>>> >> >>> >> nWave Digital
>>> >> >>> >> [email protected]
>>> >> >>> >> _______________________________________________
>>> >> >>> >> Nuke-python mailing list
>>> >> >>> >> [email protected],
>>> >> >>> >> http://forums.thefoundry.co.uk/
>>> >> >>> >>
>>> >> >>> >>
>>> >> >>> >> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
>>> >> >>> >> _______________________________________________
>>> >> >>> >> Nuke-python mailing list
>>> >> >>> >> [email protected],
>>> >> >>> >> http://forums.thefoundry.co.uk/
>>> >> >>> >>
>>> >> >>> >>
>>> >> >>> >> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
>>> >> >>> >
>>> >> >>> >
>>> >> >>> >
>>> >> >>> > _______________________________________________
>>> >> >>> > Nuke-python mailing list
>>> >> >>> > [email protected],
>>> >> >>> > http://forums.thefoundry.co.uk/
>>> >> >>> >
>>> >> >>> > http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
>>> >> >>> >
>>> >> >>> _______________________________________________
>>> >> >>> Nuke-python mailing list
>>> >> >>> [email protected],
>>> >> >>> http://forums.thefoundry.co.uk/
>>> >> >>>
>>> >> >>> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
>>> >> >>
>>> >> >>
>>> >> >
>>> >> >
>>> >> > _______________________________________________
>>> >> > Nuke-python mailing list
>>> >> > [email protected], http://forums.thefoundry.co.uk/
>>> >> > http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
>>> >> >
>>> >> _______________________________________________
>>> >> Nuke-python mailing list
>>> >> [email protected], http://forums.thefoundry.co.uk/
>>> >> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
>>> >
>>> >
>>> >
>>> > _______________________________________________
>>> > Nuke-python mailing list
>>> > [email protected], http://forums.thefoundry.co.uk/
>>> > http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
>>> >
>>> _______________________________________________
>>> Nuke-python mailing list
>>> [email protected], http://forums.thefoundry.co.uk/
>>> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
>>
>>
>>
>> _______________________________________________
>> Nuke-python mailing list
>> [email protected], http://forums.thefoundry.co.uk/
>> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
>>
>
>
>
> --
> Matthieu Cadet
> Compositor Artist & TD,
> nWave Digital
> [email protected]



-- 
Matthieu Cadet
Compositor Artist & TD,
nWave Digital
[email protected]
_______________________________________________
Nuke-python mailing list
[email protected], http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python

Reply via email to