Close/hide a child window

Cubells vicent at vcubells.net
Sat Jun 30 08:23:01 CEST 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 Python-list mailing list