मैं बनाम gtk
pygtk
से उलझन में था क्योंकि मेरे परीक्षण ऐप gtk
के साथ ठीक काम किया।
अब मुझे एहसास है कि gtk
का अर्थ है PyGTK, पाइथन मॉड्यूल जिसमें Gtk+ 2.x लाइब्रेरी में बाइंडिंग शामिल है। pygtk
एक और मॉड्यूल, PyGTK का भी हिस्सा है, कि कर सकते हैं Gtk+ पुस्तकालय की एक निश्चित संस्करण सुनिश्चित करने के लिए इस्तेमाल किया जा (लेकिन की जरूरत नहीं है) है।
gtk
और pytk
मॉड्यूल केवल पायथन 2 पर लागू होते हैं। अजगर 3 के लिए आप gi
GObject Introspection मॉड्यूल के माध्यम से Gtk+ उपयोग करने के लिए की जरूरत है।
अजगर GObject Introspection मॉड्यूल (उर्फ gi
या gi.repository
) सी पुस्तकालयों (GObject प्रयोग करके) और भाषा बाइंडिंग के बीच एक मध्यस्थ परत है। अनिवार्य रूप से यह अंतर्निहित सी स्रोत कोड से पायथन बाइंडिंग को स्वत: उत्पन्न करता है। GObjectGLib वस्तु प्रणाली, जहां GLib वस्तु उन्मुख सी-आधारित API और अन्य संकलित या व्याख्या की भाषाओं के लिए स्वत: पारदर्शी एपीआई बाइंडिंग के साथ GTK+ प्रदान करता है पुस्तकालयों और अनुप्रयोगों सी GObject में लिखा के लिए कोर आवेदन बिल्डिंग ब्लॉक्स प्रदान करता है (जैसे है अजगर)।
GTK3 + लाइब्रेरी Gobject उपयोग करता है लेकिन GTK2 + लाइब्रेरी नहीं करता है। इसका मतलब है कि आप पाइथन संस्करण 3 के साथ जीटीके 2 + का उपयोग नहीं कर सकते हैं।
अजगर 2 के लिए आप उपयोग करेंगे
import pygtk
pygtk.require('2.0')
import gtk
या सिर्फ
import gtk
अजगर 3 के लिए आप की जरूरत
import gi
gi.require_version('Gtk','3.0')
from gi.repository import Gtk
आप के साथ संस्करणों की पुष्टि कर सकते हैं:
के लिए जीटीके + 2 (पायथन 2 या 3)
print("PyGTK %d.%d.%d Gtk+ %d.%d.%d" % (gtk.pygtk_version + gtk.gtk_version))
जीटीके + 3 (अजगर 3 केवल)
print("Gtk %d.%d.%d" % (Gtk.get_major_version(),
Gtk.get_minor_version(),
Gtk.get_micro_version()))
तो PyGTK केवल आवश्यक है कि जीटीके की एक निश्चित संस्करण स्थापित है प्रयोग किया जाता है? – xRobot
@xRobot: हाँ। यदि आप एक पायथन आरईपीएल खोलते हैं, और 'आयात pygtk टाइप करें; pygtk .__ file__' आपको पैकेज का पथ मिलेगा। यह कुछ/'usr/lib/pymodules/python2.6/pygtk.pyc' जैसा हो सकता है। यदि आप पथ के अंत से 'सी' लेते हैं, और फ़ाइल '/ usr/lib/pymodules/python2.6/pygtk.py' के अंदर देखो, तो आप पाएंगे कि यह केवल तीन कार्यों को परिभाषित करता है, और उन्हें सभी को संस्करणों को निर्धारित करने और आवश्यकतानुसार करें। यह केवल इस फाइल को देखकर है कि मैं अनुमान लगा रहा/निष्कर्ष निकाला हूं कि 'pygtk' क्या है। उपयोगी टिप्स के लिए – unutbu
धन्यवाद;) – xRobot