8
votes

I'm desiging a pygtk GUI and want to embed an external application into it.

Does anyone have any idea how this can be done?

4
Not quite sure what you mean by 'embed'? Could you be more specific about your situation?zdav
What do you mean by "embed". Be more specific and give examples.Diego Torres Milano
I've done this before in Gambas2. It should look like this upload.snelhest.org/images/0812134.png You can see in the screenshot how gparted embeds into my application. by 'embed' I mean launch an external application... but instead of having the window manager decorate it and place it on the desktop, it needs to go right into my application. Think of it like doing a reparent but on a window not a widgetM0E-lnx

4 Answers

4
votes

It depends on what application you are trying to embed into yours, but if the other app is a GTK app (or one that supports the XEMBED protocol), you should be able to do this with gtk.Plug and gtk.Socket. The PyGTK tutorial has a section explaining how to do this:

http://www.pygtk.org/pygtk2tutorial/sec-PlugsAndSockets.html

3
votes

This one might help. Read the article 19.15. How do I embed something using Plugs and Sockets? (http://faq.pygtk.org/index.py?req=all#19.15) and find out how to embed arbitrary X Window application into (Py)GTK Socket.

1
votes

You don't use an external program to get the gtk.Plug/gtk.Socket ID, they have their respective functions for that. See this tutorial for examples: link.

0
votes

If you're trying to reparent an external window (that may not be a gtk window), you can use

w = gdk.window_foreign_new(window_id)

to get a gdk window object from an operating system window handle, and then use

w.reparent(parent_window, x, y)

to reparent it into an existing gtk container.