[pygtk] Unresponsive Window with commands.getstatusoutput

Christopher Bland themanatuf at juno.com
Thu Nov 9 03:34:43 WST 2006


I've read a bunch of threads and such online but I'm having a hard time
wrapping my brain around this one...

I have an app that makes a call to commands.getstatusoutput(...) and
the system call (dd to image a drive) takes a LONG time. Obviously this
is blocking any/all GTK calls and the window never gets refreshed so
the user things that the app froze and then closes it.

I have a progress bar which I set to pulse during this operation so the
user gets some warm-fuzzy that it is working but that obviously doesn't
work.

Has anyone done anything similar to this and gotten the window to be
semi-responsive? I've been working on this for a few weeks and it's
killing me. Any input would be much appreciated. Thanks!

Here are some lines in from my code (I am not using threading either):

mygui.py
import moreCode

def progress_time out(pbobj):
    # increment the progress bar and do some other things
    return True

class MyGUI:
    def __init__(self):
        # all of my initialization code to get the GUI up
        self.timer = gobject.timeout_add(100, progress_timeout, self)
        self.window.show_all()

    def main(self):
        gtk.main()

    def startWork(self, widget, data=None):
        # This gets called when the user clicks a 'Start' button
        moreCode.doStuffNow()

if __name__ == '__main__':
    gui = MyGUI()
    gui.main()

moreCode.py
import commands
def doStuffNow:
    # This is where the bulk of my processing is done
    # including the call to image my drive.
    out = commands.getstatusoutput('dd if=/dev/abc
of=/my/path/image.bin, conv=notrunc,noerror,sync')
    return



________________________________________________________________________
Try Juno Platinum for Free! Then, only $9.95/month!
Unlimited Internet Access with 1GB of Email Storage.
Visit http://www.juno.com/value to sign up today!




More information about the pygtk mailing list