2010-01-07 61 views
8

我設計方法 - 一個PyGTK的GUI和希望嵌入外部應用到它中嵌入外部應用程序。pygtk的如何我PyGTK的GUI

沒有人有任何想法如何可以做到這一點?

+0

不太清楚'嵌入'是什麼意思?你能更具體地瞭解你的情況嗎? – zdav 2010-01-07 21:40:32

+0

「嵌入」是什麼意思。 更具體一些,並舉例說明。 – 2010-01-07 21:41:13

+1

我以前在Gambas2做過這個。它應該是這樣的 http://upload.snelhest.org/images/0812134.png 你可以在截圖中看到的GParted如何嵌入到我的應用程序。 通過「嵌入」我的意思是啓動一個外部應用程序...但不是具有窗口管理器裝飾它,將它放在桌面上,它需要去直接進入我的應用程序。 認爲它像做了重新設置父級,但在窗口不是一個小部件 – 2010-01-07 22:11:22

回答

4

這取決於您試圖嵌入到您的應用程序,但如果其他應用程序是GTK應用程序(或支持XEMBED協議的應用程序),則應該可以使用gtk.Pluggtk.Socket執行此操作。該PyGTK的教程有一節解釋如何做到這一點:

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

+0

我沒看,但我只是不看看如何能幫助我嵌入外部應用程序。 通過xwinfo報告的窗口ID是一樣的東西0x12343但插頭要以長格式的窗口ID ...我不知道如何這兩個拼起來 – 2010-01-08 15:16:31

+0

@ M0E-LNX:十六進制和長期之間的轉換:'長(「0x12343」,16)'... – Sardathrion 2012-06-29 14:24:30

1

您不需要使用外部程序來獲取gtk.Plug/gtk.Socket ID,它們具有相應的功能。請參閱本教程中的示例:link

0

如果你想重新設置父級的外窗(這可能不是一個GTK窗口),您可以使用

w = gdk.window_foreign_new(window_id) 

擺脫操作系統窗口句柄GDK窗口對象,然後用

w.reparent(parent_window, x, y) 

將其重新映射到現有的gtk容器中。