You’re basically on the right track. You need to run your slow function on a
separate thread to avoid blocking Nuke’s GUI until it finishes, and you would
create and update your progress bar from within that function as well so it
will update properly in time with your processing.
import threading
import time
def dummy():
task = nuke.ProgressTask('Examining Read Nodes...')
reads = nuke.allNodes('Read')
progIncr = 100.0 / len(reads)
for i, r in enumerate(reads):
if task.isCancelled():
nuke.executeInMainThread(nuke.message, args=('Aborted',))
return
task.setProgress(int(i * progIncr))
task.setMessage(r.fullName())
# Placeholder for some long per-node process
time.sleep(2)
def aMenuCommand():
# This is the function you would actually bind to a Nuke menu command
threading.Thread(target=dummy).start()
-Nathan
From: Luca Fiorentini
Sent: Tuesday, September 18, 2012 10:19 AM
To: [email protected]
Subject: [Nuke-python] progress bar
Hi!
I am trying to make a progress bar but with no success.
I took a look at the code in the guide
http://docs.thefoundry.co.uk/nuke/63/pythondevguide/basics.html#creating-progress-bar-dialogs
But I am clearly missing something.
Could someone kindly explain it to me in an easier way?
Imagine I have a function like this:
def dummy():
for n in nuke.allNodes('Read'):
print 'here my super slow function'
where and how should I implement the progress bar?
should I use the code from the example and then call the whole funciont in a
new thread? like
threading.Thread( None, dummy ).start()
Thanks for your time
--
Luca Fiorentini - 3D Lighting Artist
My Showreel - My blog - My Flickr
--------------------------------------------------------------------------------
_______________________________________________
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