On Feb 18, 2008, at 7:19 AM, Adolfo González Blázquez wrote:

El sáb, 16-02-2008 a las 14:19 +1300, John Stowers escribió:
On Fri, 2008-02-15 at 14:05 +0100, Adolfo González Blázquez wrote:
Hello,

I'm writing a little app that needs 2 windows, a main window, and
another for entering data. I'm writing it using Glade, so both windows are defined in one glade file. The second one, emulates a entry dialog,
and is modal.

My problem is that i want the second window displayed when i click in a button in the main window, and then, when i press "Close" in the second
window, get the text and do some things, and update the main window
status bar.

I dont quite understand you here, it doesnt sound like a threads issue,
more a design issue.

When I want to return stuff from a dialog I typically create my own
dialog subclass [1] which returns a tuple of the dialog specific
information from the (overridden run method). For example (excuse broken
pseudocode)

class MyDialog(gtk.Dialog)
     def __init__(self, setting1, setting2, setting3)
         #call super
         #save old settings
         self.oldsetting1 = setting1
         ...etc
         #construct dialog
         self.widget1 = gtk.Entry()
         self.widget1.set_text(setting1)
         ...etc

     def run(self):
         if gtk.Dialog.run(self) == gtk.RESPONSE_OK:
              setting1 = self.widget1.get_text()
              setting2 = self.widget2.get_text()
              setting3 = self.widget3.get_text()
              return setting1, setting2, setting3
         else:
return self.oldsetting1, self.oldsettin2, self.oldsetting3

then run it with
dialog = MyDialog(a,b,c)
a,b,c = dialog.run()
dialog.distroy()

Well, I've subclassed gtk.Dialog as you point, and I'm still having the
same issue.

I run the dialog, enter the data and click OK. Then it was supposed to
hide the dialog, and update the statusbar while things are happening,
but in fact the gui freezes till the end.

Dialog.run() is the "problem".
From
http://www.pygtk.org/pygtk2reference/class-gtkdialog.html#method- gtkdialog--run "The run() method blocks in a recursive main loop until the dialog either emits the "response" signal, or is destroyed"

To get the behavior you want, you need to set up a callback for the OK button which fetches the text and performs the desired action.


The related code is here:
http://pastebin.com/mb2ea398

And a screencast of what is happening in here:
http://www.infinicode.org/code/out.ogg

Any idea?


Regards,

John

[1] http://davyd.livejournal.com/237414.html


Here's a screencast of what i'm doing:
http://www.infinicode.org/code/out.ogg

What it was supposed to do is:
- Open the add window
- Enter the text and click close
- The add window closes
- In the main window status bar appears "Conectando..."
- The status bar changes to "Conectado!"
- A error dialog appers

Relevant code here:
http://pastebin.com/f6bf4e71b


Thanks in advance for any help

-- adolfo
_______________________________________________
pygtk mailing list   [email protected]
http://www.daa.com.au/mailman/listinfo/pygtk
Read the PyGTK FAQ: http://www.async.com.br/faq/pygtk/

_______________________________________________
pygtk mailing list   [email protected]
http://www.daa.com.au/mailman/listinfo/pygtk
Read the PyGTK FAQ: http://www.async.com.br/faq/pygtk/

--
Steve McClure
[EMAIL PROTECTED]

_______________________________________________
pygtk mailing list   [email protected]
http://www.daa.com.au/mailman/listinfo/pygtk
Read the PyGTK FAQ: http://www.async.com.br/faq/pygtk/

Reply via email to