[pygtk] how to add window as a page to a notebook
Andi Albrecht
albrecht.andi at googlemail.com
Sat Jan 10 22:11:17 WST 2009
ups, sorry... you'll have to get the window first:
xml = gtk.glade.XML(my_ui.glade)
win = xml.get_widget('window1') # or whatever the name of your
toplevel window is
widget = win.get_child()
But if you don't need the top-level window, it's probably better to
get the child widget directly from the Glade file.
On Sat, Jan 10, 2009 at 10:45 AM, anusha k <anuhacks at gmail.com> wrote:
>
> hi Andi,
> I tried your second solution.But it is giving the error:'glade.XML' object
> has no attribute 'get_child'
> for your reference i am sending my whole folder as tar.gz.Please refer it .
> Thanks for your help.
>
> Njoy the share of Freedom,
> Anusha
>
> On Sat, Jan 10, 2009 at 1:11 PM, Andi Albrecht
> <albrecht.andi at googlemail.com> wrote:
>>
>> Hi Anusha,
>>
>> I think there are two problems here: First you have to reparent the
>> widget you want to add to the notebook and then you can't add toplevel
>> windows to notebooks.
>>
>> I could not test it, but IMO show_newOrganisation() should look
>> something like this (where NAME_OF_THE_WIDGET is the name of the first
>> child widget in your second glade file):
>>
>> def show_newOrganisation(self,widget):
>> new_org.org()
>> self.gladefile_newOrg = "new_org.glade"
>> widget = gtk.glade.XML(self.gladefile_newOrg, 'NAME_OF_THE_WIDGET')
>> self.page=self.notebook.insert_page(widget , None, 0)
>> self.notebook.set_current_page(self.page)
>>
>> FWIW, if you need to toplevel window from the second glade file too
>> you can do something like this:
>>
>> def show_newOrganisation(self,widget):
>> new_org.org()
>> self.gladefile_newOrg = "new_org.glade"
>> self.wTreenewOrg = gtk.glade.XML(self.gladefile_newOrg)
>> self.page = self.wTreenewOrg.get_child()
>> self.page.reparent(self.notebook)
>> self.page.set_tab_label_text(self.page, 'some tab label')
>>
>> Regards,
>>
>> Andi
>>
>> On Sat, Jan 10, 2009 at 7:54 AM, anusha k <anuhacks at gmail.com> wrote:
>> > hi,
>> >
>> > I am using glade and pygtk to develop an accounting software.In that we
>> > have
>> > two glade files .first glade file contain the main window and the note
>> > book
>> > and the second glade contains the another window .I want to add the
>> > second
>> > glade-window as a page to first glade-window.how to do this
>> > I have the code as below.but it is giving the warning and the window is
>> > not
>> > shown up .warnings are :
>> > How to solve the warnings.Is there any other way to solve this
>> >
>> > Warnings:****************************************************************************
>> >
>> > self.wTree = gtk.glade.XML(self.gladefile)
>> > main.py:47: GtkWarning: gtk_notebook_set_tab_label: assertion
>> > `GTK_IS_WIDGET
>> > (child)' failed
>> > self.wTree = gtk.glade.XML(self.gladefile)
>> > main.py:20: GtkWarning: Can't set a parent on a toplevel widget
>> >
>> >
>> >
>> > self.page=self.notebook.insert_page(self.wTreenewOrg.get_widget("window_new_org")
>> > , None, 0)
>> > main.py:20: GtkWarning: gtk_widget_set_child_visible: assertion
>> > `!GTK_WIDGET_TOPLEVEL (widget)' failed
>> >
>> >
>> > self.page=self.notebook.insert_page(self.wTreenewOrg.get_widget("window_new_org")
>> > , None, 0)
>> >
>> > ***************************************************************************
>> > Code:
>> >
>> > import pygtk
>> > pygtk.require('2.0')
>> > import gtk
>> > import gtk.glade
>> > import new_org
>> > class mainmenu:
>> > def show_newOrganisation(self,widget):
>> > new_org.org()
>> > self.gladefile_newOrg = "new_org.glade"
>> > self.wTreenewOrg = gtk.glade.XML(self.gladefile_newOrg)
>> >
>> >
>> > self.page=self.notebook.insert_page(self.wTreenewOrg.get_widget("window_new_org")
>> > , None, 0)
>> > self.notebook.set_current_page(self.page)
>> >
>> > def dialogQuit(self,widget):
>> > self.dialog_quit = self.wTree.get_widget("dialog_quit")
>> > self.dialog_quit.show()
>> > self.response = self.dialog_quit.run()
>> > if self.response == 'gtk.RESPONSE_QUIT':
>> > gtk.main_quit()
>> > self.window.destroy()
>> > self.dialog_quit.destroy()
>> >
>> >
>> > def on_button_quit_clicked(*args):
>> > gtk.main_quit()
>> >
>> > def on_button_cancel_clicked(*args):
>> > self.dialog_quit.destroy()
>> >
>> > #To quit the main window
>> > def on_Mainwindow_destroy(self):
>> > gtk.main_quit()
>> >
>> >
>> > def __init__(self):
>> > #set the glade file
>> > self.gladefile = "gnukhata.glade"
>> > self.wTree = gtk.glade.XML(self.gladefile)
>> >
>> > #get the Main Window and connect the Destroy event
>> > self.window = self.wTree.get_widget("MainWindow")
>> > self.window.show()
>> > self.window.connect('destroy',gtk.main_quit)
>> > self.notebook = self.wTree.get_widget("notebook_main")
>> > self.notebook.show()
>> >
>> > self.menuitem_quit = self.wTree.get_widget("menuitem_quit")
>> > self.menuitem_quit.connect('activate',self.dialogQuit)
>> >
>> > self.menuitem_newOrg =
>> > self.wTree.get_widget("menuitem_new_organisation")
>> >
>> > self.menuitem_newOrg.connect('activate',self.show_newOrganisation)
>> > if __name__ == "__main__":
>> > mm=mainmenu()
>> > gtk.main()
>> >
>> > Thanks in advance
>> >
>> > Njoy the share of Freedom,
>> > Anusha
>> >
>> > _______________________________________________
>> > pygtk mailing list pygtk at daa.com.au
>> > http://www.daa.com.au/mailman/listinfo/pygtk
>> > Read the PyGTK FAQ: http://faq.pygtk.org/
>> >
>> _______________________________________________
>> pygtk mailing list pygtk at daa.com.au
>> http://www.daa.com.au/mailman/listinfo/pygtk
>> Read the PyGTK FAQ: http://faq.pygtk.org/
>
>
More information about the pygtk
mailing list