2009-06-17 14 views
5

का उपयोग करके मेरे एप्लिकेशन में कुछ एप्लिकेशन विंडो को एम्बेड करने के लिए कैसे करें, मैं चाहता हूं कि कुछ एप्लिकेशन मेरे पायथन एप्लिकेशन के अंदर विजेट जैसा दिखें।किसी भी पायथन जीयूआई फ्रेमवर्क

यह सब कुछ है। मुझे उनके बीच किसी भी बातचीत की ज़रूरत नहीं है। मुझे में किसी भी GUI टूलकिट दोनों विंडोज़ और एक्स विंडोज़ में समाधान में रूचि है।

टिंकर के साथ समाधान करना अच्छा लगेगा लेकिन यह महत्वपूर्ण नहीं है।

+0

मुझे लगता है कि यह अत्यधिक प्लेटफ़ॉर्म निर्भर है। कृपया अधिक जानकारी दें। – yairchu

उत्तर

5

एक्स विंडोज़ (यानी लिनक्स, फ्रीबीएसडी, सोलारिस) पर जीटीके का उपयोग करके, आप gtk.Socket का उपयोग करके विजेट एम्बेड करने के लिए XEMBED प्रोटोकॉल का उपयोग कर सकते हैं। दुर्भाग्यवश, जो एप्लिकेशन आप लॉन्च कर रहे हैं उसे स्पष्ट रूप से इसका समर्थन करना है ताकि आप इसे स्वयं एम्बेड करने के लिए कह सकें। कुछ अनुप्रयोग इसका समर्थन नहीं करते हैं। विशेष रूप से, मुझे फ़ायरफ़ॉक्स के साथ ऐसा करने का कोई तरीका नहीं मिल रहा है। टिप्पणी करने के लिए पर ग्लिफ़ का जवाब

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

क्या आपको पता है कि एम्बेडेड xterm को कीबोर्ड ईवेंट क्यों नहीं मिलते हैं? – MeanEYE

+0

@MeanEYE, फोकस का मामला हो सकता है? – Hibou57

+1

@ Hibou57 ओह, मैंने बहुत समय पहले इस समस्या को हल किया था। :) आपके परिश्रम के लिए धन्यवाद। मैंने जो किया वह 'object.child_focus (gtk.DIR_TAB_FORWARD)', 'ऑब्जेक्ट' सॉकेट था। – MeanEYE

0

पर्याप्त प्रतिष्ठा:

बहरहाल, यहाँ है कि या तो एक एक्स टर्मिनल या एक जीटीके खिड़की के अंदर एक Emacs सत्र चलेंगे एक नमूना कार्यक्रम है। टर्म काम करते हैं, टिप्पणी के अलावा ऊपर एक भी ~/.Xresources को

XTerm*allowSendEvents: True 

जोड़ने की जरूरत है करने के लिए। (और शायद xrdb -load ~/.Xresources के साथ उनको पुनः लोड करें)

संबंधित मुद्दे