2010-10-18 80 views
18

कई प्रोग्रामर इस तरह से दोनों जीटीके और PyGTK आयात:जीटीके और PyGTK अंतर

import gtk 
import pygtk 

मैं एक साधारण प्रोग्राम बनाया है केवल जीटीके उपयोग करते हुए और यह काम करता है:

import gtk 

window = gtk.Window() 
window.set_size_request(800, 700) 
window.set_position(gtk.WIN_POS_CENTER) 
window.connect("destroy", gtk.main_quit) 

button = gtk.Button("Vai") 
button.set_size_request(30, 35) 
button.connect("clicked", naviga) 
testo = gtk.Entry() 

h = gtk.HBox() 
h.pack_start(testo) 
h.pack_start(button) 

window.add(h) 
window.show_all() 
gtk.main() 

तो ... सवाल यह है कि जीटीके और पीवायजीटीके से क्या अंतर है?

उत्तर

15

pygtkpython-gobject द्वारा प्रदान किया गया है। gtkpython-gtk2 द्वारा प्रदान किया गया है।

pygtkpygtk.require समारोह है जो आप की आवश्यकता होती है कि जीटीके (या बेहतर) की एक निश्चित संस्करण स्थापित है की अनुमति देता है प्रदान करता है। उदाहरण

import pygtk 
pygtk.require('2.0') 

gtk आयात करने के लिए ही संभव है, लेकिन अपने कार्यक्रम किसी और की मशीन पर उम्मीद के रूप में अगर जीटीके के अपने संस्करण पुराना है काम न करें।

+0

तो PyGTK केवल आवश्यक है कि जीटीके की एक निश्चित संस्करण स्थापित है प्रयोग किया जाता है? – xRobot

+3

@xRobot: हाँ। यदि आप एक पायथन आरईपीएल खोलते हैं, और 'आयात pygtk टाइप करें; pygtk .__ file__' आपको पैकेज का पथ मिलेगा। यह कुछ/'usr/lib/pymodules/python2.6/pygtk.pyc' जैसा हो सकता है। यदि आप पथ के अंत से 'सी' लेते हैं, और फ़ाइल '/ usr/lib/pymodules/python2.6/pygtk.py' के अंदर देखो, तो आप पाएंगे कि यह केवल तीन कार्यों को परिभाषित करता है, और उन्हें सभी को संस्करणों को निर्धारित करने और आवश्यकतानुसार करें। यह केवल इस फाइल को देखकर है कि मैं अनुमान लगा रहा/निष्कर्ष निकाला हूं कि 'pygtk' क्या है। उपयोगी टिप्स के लिए – unutbu

+0

धन्यवाद;) – xRobot

1

मैं बनाम gtkpygtk से उलझन में था क्योंकि मेरे परीक्षण ऐप gtk के साथ ठीक काम किया।

अब मुझे एहसास है कि gtk का अर्थ है PyGTK, पाइथन मॉड्यूल जिसमें Gtk+ 2.x लाइब्रेरी में बाइंडिंग शामिल है। pygtk एक और मॉड्यूल, PyGTK का भी हिस्सा है, कि कर सकते हैं Gtk+ पुस्तकालय की एक निश्चित संस्करण सुनिश्चित करने के लिए इस्तेमाल किया जा (लेकिन की जरूरत नहीं है) है।

gtk और pytk मॉड्यूल केवल पायथन 2 पर लागू होते हैं। अजगर 3 के लिए आप giGObject 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())) 
संबंधित मुद्दे