2009-06-17 4 views
5

일부 응용 프로그램이 내 파이썬 응용 프로그램 내에서 위젯처럼 보이길 원합니다.파이썬 GUI 프레임 워크를 사용하여 내 응용 프로그램에 일부 응용 프로그램 윈도우를 포함하는 방법

그게 전부입니다. 나는 그들 사이에 어떤 상호 작용이 필요 없다. 나는 의 솔루션에 관심이 있습니다. 모든 Windows 및 x 윈도우 용 GUI 툴킷.

Tkinter를 사용하는 것이 좋지만 중요하지는 않습니다.

+0

나는 그것이 고도의 플랫폼에 의존한다고 생각해. 자세한 내용을 알려주십시오. – yairchu

답변

5

X 윈도우 (예 : Linux, FreeBSD, Solaris)에서 GTK를 사용하면 XEMBED 프로토콜을 사용하여 gtk.Socket을 사용하여 위젯을 내장 할 수 있습니다. 안타깝게도, 실행중인 응용 프로그램은 명시 적으로 지원해야하므로 자신을 포함 시키도록 말할 수 있습니다. 일부 응용 프로그램은이 기능을 지원하지 않습니다. 특히, 나는 Firefox로 그것을 할 수있는 방법을 찾을 수 없습니다. 글리프 대답에 대한 언급을

import os 
import gtk 
from gtk import Socket, Button, Window, VBox, HBox 

w = Window() 
e = Button("Emacs") 
x = Button("XTerm") 
s = Socket() 
v = VBox() 
h = HBox() 
w.add(v) 
v.add(s) 
h.add(e) 
h.add(x) 
v.pack_start(h, expand=False) 

def runemacs(btn): 
    x.set_sensitive(False); e.set_sensitive(False) 
    os.spawnlp(os.P_NOWAIT, "emacs", 
     "emacs", "--parent-id", str(s.get_id())) 

def runxterm(btn): 
    x.set_sensitive(False); e.set_sensitive(False) 
    os.spawnlp(os.P_NOWAIT, "xterm", 
     "xterm", "-into", str(s.get_id())) 

e.connect('clicked', runemacs) 
x.connect('clicked', runxterm) 
w.show_all() 
gtk.main() 
+0

embeded xterm이 키보드 이벤트를받지 못하는 이유를 알고 있습니까? – MeanEYE

+0

@MeanEYE, 초점이 맞습니까? – Hibou57

+1

@ Hibou57 오, 오래 전에이 문제를 해결했습니다. :) 노력에 감사드립니다. 내가 한 것은'object.child_focus (gtk.DIR_TAB_FORWARD)'이고,'object'는 소켓입니다. – MeanEYE

0

충분하지 평판 :

그럼에도 불구하고, 여기에 X 터미널이나 이맥스 세션 다음 GTK 창 내부 중 하나를 실행하는 샘플 프로그램입니다. 하나는 ~/.Xresources

XTerm*allowSendEvents: True 

을 추가해야합니다 위의 의견뿐만 아니라, xterm 등의 작업을합니다. (그리고 아마도 그들을 다시로드 xrdb -load ~/.Xresources)

관련 문제