[pygtk] Close/hide a child window

Cubells vicent at vcubells.net
Sat Jun 30 14:38:12 WST 2007


Hi there:

I have two simple classes in two diferent files:

$ cat first.py

#/usr/bin/env python
# -*- coding: utf-8 -*-

import pygtk
pygtk.require('2.0')
import gtk

import second

class first:

   def close_program(self, widget, data=None):
       gtk.main_quit()
       return False
   def open_second(self, widget):
       second_window = eval("second.second")(self)

   def __init__(self):
       window = gtk.Window(gtk.WINDOW_TOPLEVEL)
       window.connect("delete_event", self.close_program)
       window.set_title("First")
       window.set_border_width(10)
       button = gtk.Button("Open")
       button.connect("clicked", self.open_second)
       window.add(button)
       window.show_all()

def main():
   gtk.main()
   return 0

if __name__ == "__main__":
   first()      main()


That's the second one:

$ cat second.py

#/usr/bin/env python
# -*- coding: utf-8 -*-

import pygtk
pygtk.require('2.0')
import gtk

class second(gtk.Window):

   def close_second(self,widget):
       self.hide()
       #self.destroy()
       #gtk.main_quit()
       return False

   def __init__(self, parent=None):
       gtk.Window.__init__(self)
       try:
           self.set_screen(parent.get_screen())
       except:
           self.connect("destroy", lambda *w: gtk.main_quit())
       window2 = gtk.Window(gtk.WINDOW_TOPLEVEL)
       window2.set_title("Second")
       window2.set_border_width(10)
       window2.set_modal(True)
       window2.set_resizable(False)
       button2 = gtk.Button("Second")
       button2.connect("clicked", self.close_second)
       window2.add(button2)
       window2.show_all()

def main():
   gtk.main()
   return 0

if __name__ == "__main__":
   second()      main()

The question is simple:

How can I close/hide/destroy the second window without to destroy the 
first window when I click the button2??
When I close the second window it works, but when I click the button2 it 
doesn't.

A lot of thanks...


More information about the pygtk mailing list