Checking the objectName() of the objects might be a bit more reliable
than the windowTitle:
from PySide import QtGui, QtCore
def findviewer():
stack = QtGui.QApplication.topLevelWidgets()
viewers = []
while stack:
widget = stack.pop()
if widget.objectName().startswith('Viewer.'):
viewers.append(widget)
stack.extend(c for c in widget.children() if c.isWidgetType())
return viewers
print findviewer()
On 26/10/16 09:48, Nathan Dunsworth wrote:
The viewer widget is a QGLWidget which does its painting asynchronously
so calling update() or repaint() doesn't really have an immediate effect.
You can use...
pixmap = QtGui.QPixmap.grabWindow(
THE_VIEWER_WIDGET.winId()
)
This will grab the fully rendered pixmap of the widget from the window
system. Take note that grabWindow(...) will also pickup any windows you
currently have over the widget.
On Tue, Oct 25, 2016 at 3:59 PM, Carl Schröter <ad...@l-rac.de
<mailto:ad...@l-rac.de>> wrote:
I played around a bit and it seems like you both are right.
You can grab the viewer-widget, but when I simply create a pixmap
from it I get a white square with overlays (roto, roi, etc.)
from PySide import QtGui, QtCore
for i in QtGui.qApp.allWidgets():
# the panes are named!
if i.windowTitle() == 'Viewer1':
#
QtGui.QPixmap.grabWidget(i).save('T:\\nukeviewertests\\complete-viewer.png',
'png')
for id, child in enumerate(i.findChildren(QtGui.QWidget)):
# lazy way to figure out what's interesting
#
QtGui.QPixmap.grabWidget(child).save('T:\\nukeviewertests\\'+str(id)+'.png',
'png')
if id == 0:
# this seems to be the viewer bbox starting at bottom left
print child
child.setStyleSheet("""QWidget { border: 2px solid green;}""")
elif id == 1:
# this seems to be the complete viewer area we are after
print child
child.setStyleSheet("""QWidget { border: 2px solid red;}""")
Seems like there is more going on than simply drawing a widget.
Did you try using *nukescripts.captureViewer*?**Might be a more
elegant solution.
Best,
Carl
Mads Lund <madshl...@gmail.com <mailto:madshl...@gmail.com>> schrieb
am Di., 25. Okt. 2016 um 21:09 Uhr:
Guess i don't remember correctly then...
On Tue, Oct 25, 2016 at 9:41 PM, Nathan Dunsworth
<nathandunswo...@gmail.com <mailto:nathandunswo...@gmail.com>>
wrote:
Incorrect...
You can grab the pixmap of the viewer if you do it correctly.
On Tue, Oct 25, 2016 at 12:40 PM, Mads Lund
<madshl...@gmail.com <mailto:madshl...@gmail.com>> wrote:
The viewer is a seperate GL thing if i remember
correctly so in python it just appears all black sadly.
On Tue, Oct 25, 2016 at 6:49 PM, Fredrik Averpil
<fredrik.aver...@gmail.com
<mailto:fredrik.aver...@gmail.com>> wrote:
I’m trying to figure out how I can find the viewer’s
widget (and if you have more than one viewer, I’ll
just settle with the first one).
Does anyone have an idea on how it can be fetched?
I’ve tried to loop over all widgets in
|QtGui.qApp.topLevelWidgets()|, identified which
ones are layouts and then iterated through their
contents… but I haven’t found anything resembling a
viewer.
I need the widget object, as my goal is to be able
to grab a screenshot of it using
|QtGui.QPixmap.grabWidget(widget)|:
|screenshot = QtGui.QPixmap.grabWidget(widget)
filepath = os.path.expanduser("~/screenshot.png")
screenshot.save(filepath,'png')
|
Any ideas?
Regards,
Fredrik
_______________________________________________
Nuke-python mailing list
Nuke-python@support.thefoundry.co.uk
<mailto:Nuke-python@support.thefoundry.co.uk>,
http://forums.thefoundry.co.uk/
<http://forums.thefoundry.co.uk/>
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
<http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python>
_______________________________________________
Nuke-python mailing list
Nuke-python@support.thefoundry.co.uk
<mailto:Nuke-python@support.thefoundry.co.uk>,
http://forums.thefoundry.co.uk/
<http://forums.thefoundry.co.uk/>
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
<http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python>
_______________________________________________
Nuke-python mailing list
Nuke-python@support.thefoundry.co.uk
<mailto:Nuke-python@support.thefoundry.co.uk>,
http://forums.thefoundry.co.uk/
<http://forums.thefoundry.co.uk/>
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
<http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python>
_______________________________________________
Nuke-python mailing list
Nuke-python@support.thefoundry.co.uk
<mailto:Nuke-python@support.thefoundry.co.uk>,
http://forums.thefoundry.co.uk/ <http://forums.thefoundry.co.uk/>
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
<http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python>
_______________________________________________
Nuke-python mailing list
Nuke-python@support.thefoundry.co.uk
<mailto:Nuke-python@support.thefoundry.co.uk>,
http://forums.thefoundry.co.uk/ <http://forums.thefoundry.co.uk/>
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
<http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python>
_______________________________________________
Nuke-python mailing list
Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
--
ben dickson
2D TD | ben.dick...@rsp.com.au
rising sun pictures | www.rsp.com.au
_______________________________________________
Nuke-python mailing list
Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python