I am making an interface where you have to be logged to enter. So at sign in window I put a button to open a modal window (about dialog). It works fine, but just once, I mean: this window can be opened and closed, but if you try again, it fails. I can not realize why and I am quite begginer. The Glade code is:
<?xml version="1.0" encoding="UTF-8"?> <!-- Generated with glade 3.16.1 --> <interface> <requires lib="gtk+" version="3.10"/> <object class="GtkAboutDialog" id="aboutwin"> <property name="can_focus">False</property> <property name="resizable">False</property> <property name="modal">True</property> <property name="window_position">center</property> <property name="destroy_with_parent">True</property> <property name="type_hint">dialog</property> <property name="has_resize_grip">False</property> <property name="program_name">Movies App</property> <property name="version">Version: 0.1</property> <property name="authors">Markos Horro Varela Breixo Camiña Fernández</property> <property name="documenters">Markos Horro Varela Breixo Camiña Fernández</property> <property name="translator_credits" translatable="yes">Markos Horro Varela Breixo Camiña Fernández</property> <property name="artists">Markos Horro Varela Breixo Camiña Fernández</property> <property name="logo_icon_name">video-x-generic</property> <property name="license_type">gpl-3-0</property> <signal name="close" handler="onDeleteWindow" swapped="no"/> <signal name="delete-event" handler="onDeleteWindow" swapped="no"/> <child internal-child="vbox"> <object class="GtkBox" id="about"> <property name="can_focus">False</property> <property name="orientation">vertical</property> <property name="spacing">2</property> <child internal-child="action_area"> <object class="GtkButtonBox" id="aboutdialog-action_area1"> <property name="can_focus">False</property> <property name="layout_style">end</property> <signal name="delete-event" handler="onDeleteWindow" swapped="no"/> </object> <packing> <property name="expand">False</property> <property name="fill">True</property> <property name="pack_type">end</property> <property name="position">0</property> </packing> </child> </object> </child> </object> <object class="GtkWindow" id="signinwin"> <property name="can_focus">False</property> <property name="title" translatable="yes">Movie App</property> <property name="resizable">False</property> <property name="window_position">center</property> <property name="has_resize_grip">False</property> <signal name="delete-event" handler="onDeleteWindow" swapped="no"/> <child> <object class="GtkGrid" id="grid1"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="margin_left">10</property> <property name="margin_right">60</property> <property name="margin_top">10</property> <property name="margin_bottom">10</property> <child> <object class="GtkEntry" id="login"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="margin_right">10</property> <property name="margin_bottom">5</property> <property name="input_purpose">name</property> </object> <packing> <property name="left_attach">2</property> <property name="top_attach">1</property> <property name="width">1</property> <property name="height">1</property> </packing> </child> <child> <object class="GtkEntry" id="pass"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="margin_right">10</property> <property name="margin_top">5</property> <property name="margin_bottom">5</property> <property name="placeholder_text" translatable="yes">************</property> <property name="input_purpose">password</property> </object> <packing> <property name="left_attach">2</property> <property name="top_attach">2</property> <property name="width">1</property> <property name="height">1</property> </packing> </child> <child> <object class="GtkLabel" id="userlabel"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="margin_right">6</property> <property name="label" translatable="yes">User</property> </object> <packing> <property name="left_attach">1</property> <property name="top_attach">1</property> <property name="width">1</property> <property name="height">1</property> </packing> </child> <child> <object class="GtkLabel" id="passlabel"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="margin_right">6</property> <property name="label" translatable="yes">Password</property> </object> <packing> <property name="left_attach">1</property> <property name="top_attach">2</property> <property name="width">1</property> <property name="height">1</property> </packing> </child> <child> <object class="GtkButton" id="button1"> <property name="label" translatable="yes">Sign in</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">True</property> <property name="margin_left">20</property> <property name="margin_right">20</property> </object> <packing> <property name="left_attach">2</property> <property name="top_attach">3</property> <property name="width">1</property> <property name="height">1</property> </packing> </child> <child> <object class="GtkLabel" id="title"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="margin_left">5</property> <property name="margin_right">5</property> <property name="margin_top">5</property> <property name="margin_bottom">5</property> <property name="label" translatable="yes">Movie App</property> </object> <packing> <property name="left_attach">2</property> <property name="top_attach">0</property> <property name="width">1</property> <property name="height">1</property> </packing> </child> <child> <object class="GtkGrid" id="grid2"> <property name="visible">True</property> <property name="can_focus">False</property> <child> <object class="GtkButton" id="policy"> <property name="label" translatable="yes">Policy</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">True</property> <property name="margin_left">30</property> <property name="margin_right">5</property> <property name="margin_top">30</property> <property name="margin_bottom">5</property> </object> <packing> <property name="left_attach">0</property> <property name="top_attach">0</property> <property name="width">1</property> <property name="height">1</property> </packing> </child> <child> <object class="GtkButton" id="aboutus"> <property name="label" translatable="yes">About</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">True</property> <property name="margin_left">5</property> <property name="margin_right">30</property> <property name="margin_top">30</property> <property name="margin_bottom">5</property> <signal name="clicked" handler="onAboutPressed" swapped="no"/> </object> <packing> <property name="left_attach">1</property> <property name="top_attach">0</property> <property name="width">1</property> <property name="height">1</property> </packing> </child> </object> <packing> <property name="left_attach">2</property> <property name="top_attach">4</property> <property name="width">1</property> <property name="height">1</property> </packing> </child> <child> <placeholder/> </child> <child> <placeholder/> </child> <child> <placeholder/> </child> <child> <placeholder/> </child> <child> <placeholder/> </child> <child> <placeholder/> </child> <child> <placeholder/> </child> <child> <placeholder/> </child> </object> </child> </object> </interface> And my python code is:
#!/usr/bin/python from gi.repository import Gtk class Handler(Gtk.Window): def onDeleteWindow(self, *args): self.destroy() Gtk.main_quit(*args) def onAboutPressed(self, button): about = builder.get_object("aboutwin") about.run() about.destroy() builder = Gtk.Builder() builder.add_from_file("v0.glade") builder.connect_signals(Handler()) main = builder.get_object("signinwin") main.show_all() Gtk.main()