मैंने ग्लैड, पायथन और जीटीके 3 पुस्तकालयों के साथ एक जीयूआई बनाना शुरू किया। मैं अपने जीयूआई में एक कंटेनर के अंदर जोड़ने वाली बाहरी विंडो को देखने का प्रयास करना चाहता हूं। क्या यह संभव है? ऐसा करने के लिए सबसे अच्छा कंटेनर ऑब्जेक्ट कौन सा है?जीयूआई में बाहरी विंडो को कैसे एम्बेड करें (पायथन + ग्लैड + जीटीके 3)
मैंने खोजना शुरू किया लेकिन जीटीके 2 (here) में आसान तरीकों का उपयोग जीटीके 3 में और नहीं किया जा सकता है।
मुझे एक बहुत ही रोचक पोस्ट here मिला जो मुझे लक्ष्य विंडो की सही आईडी सेट करने की अनुमति देता है लेकिन मैं अभी भी अपने जीयूआई के अंदर इसे दिखाने के तरीके पर उलझन में हूं।
मैंने कैरियो के साथ थोड़ा these tutorials बदलने की कोशिश की।
अब तक मेरा कोड का टुकड़ा (मैं id_area कंटेनर में आईडी = 0x360000b के साथ विंडो प्रदर्शित करना चाहता हूं और मुझे "स्वयं" हैंडल संरचना का उपयोग करना होगा)। अस्थायी रूप से map_area कंटेनर एक Drawingarea है।
# if condition occurs
Gdk.Window.process_all_updates()
win_id = 0x360000b # from xwininfo command
root_win = GdkX11.X11Display.get_default()
win = GdkX11.X11Window.foreign_new_for_display(root_win, win_id)
width = win.get_width()
height = win.get_height()
self.map_area = cairo.ImageSurface(cairo.FORMAT_ARGB32, width, height)
pixbuf = Gdk.pixbuf_get_from_window(win, 0, 0, width, height)
cr = cairo.Context(self.map_area)
Gdk.cairo_set_source_pixbuf(cr, pixbuf, 0, 0)
cr.paint()
क्या कोई मेरी मदद कर सकता है? अग्रिम धन्यवाद!
https://developer.gnome.org/gtk3/stable/GtkSocket.html पर एक नज़र डालें - इस समाधान को अन्य प्रक्रिया से कुछ सहयोग की आवश्यकता है। – Phillip
क्या यह ** बाहरी ** प्रक्रिया को एम्बेड करने के लिए भी काम कर सकता है? मुझे अपनी स्क्रिप्ट में विजेट के रूप में जेनरेट की गई विंडो में दिलचस्पी है। ऐसा हो सकता है कि मैं अपनी gtk मुख्य विंडो – marcoresk
के अंदर उचित विजेट में उबंटू टर्मिनल विंडो या वर्तमान मोज़िला फ़ायरफ़ॉक्स ब्राउज़र विंडो को एम्बेड करना चाहता हूं (मुझे नहीं पता कि यह कौन हो सकता है) निश्चित रूप से, दस्तावेज का मतलब है "अन्य" प्रक्रिया। * लेकिन * बाहरी प्रक्रिया को आपके साथ सहयोग करने की आवश्यकता है; अर्थात्, इसे GtkSocket द्वारा बनाई गई विंडो में सक्रिय रूप से अपनी शीर्ष-स्तरीय विंडो को अभिभावित करना होगा। उदाहरण के लिए, xterm के लिए '-into' विकल्प है। (यदि आप Xlib को अपनी स्क्रिप्ट पर निर्भरता के रूप में जोड़ना चाहते हैं, तो आप इसे अन्य एप्लिकेशन के लिए कर सकते हैं। मैं एक उदाहरण के साथ एक उत्तर पोस्ट करूंगा।) – Phillip