PyGTK - DrawingArea क्लास
ड्रॉइंगअरे विजेट एक खाली कैनवास प्रस्तुत करता है, जिसमें एक gtk.gdk.Window होता है, जिस पर रेखा, आयत, चाप, आदि जैसी वस्तुओं को खींचा जा सकता है।
PyGTK ऐसे ड्राइंग ऑपरेशन के लिए काहिरा लाइब्रेरी का उपयोग करता है। काहिरा एक लोकप्रिय 2D वेक्टर ग्राफिक्स लाइब्रेरी है। यह सी में लिखा गया है, हालांकि, इसकी अधिकांश भाषाओं में बाइंडिंग है जैसे कि C ++, Java, Python, PHP आदि काहिरा लाइब्रेरी का उपयोग विभिन्न ऑपरेटिंग सिस्टम में मानक आउटपुट डिवाइसों को खींचने के लिए किया जा सकता है। इसका उपयोग पीडीएफ, एसवीजी और पोस्ट-स्क्रिप्ट फ़ाइलों को बनाने के लिए भी किया जा सकता है।
अलग-अलग ड्राइंग ऑपरेशन करने के लिए, हमें डिवाइस को लक्ष्य आउटपुट ऑब्जेक्ट के टेक्स्ट पर लाना होगा। इस मामले में, चूंकि ड्राइंग gtk.DrawingArea विजेट पर दिखाई दे रही है, इसलिए इसके अंदर gdk.Window का डिवाइस संदर्भ प्राप्त किया गया है। इस वर्ग में एcairo-create() विधि जो डिवाइस संदर्भ देता है।
area = gtk.DrawingArea()
dc = area.window.cairo_create()
DrawingArea विजेट को इसके द्वारा उत्सर्जित निम्न संकेतों के आधार पर कॉलबैक से जोड़ा जा सकता है -
एहसास | जब किसी विशेष प्रदर्शन पर विजेट को तत्काल किया जाता है तो कोई आवश्यक कार्रवाई करने के लिए। |
configure_event | विजेट के आकार में परिवर्तन होने पर कोई आवश्यक कार्यवाही करने के लिए। |
expose_event | विजेट की सामग्री को फिर से व्यवस्थित करने के लिए जब एक ड्राइंग क्षेत्र पहली बार स्क्रीन पर आता है, या जब इसे किसी अन्य विंडो द्वारा कवर किया जाता है और फिर खुला (उजागर) किया जाता है। |
माउस और कीबोर्ड ईवेंट का उपयोग कॉलबैक को लागू करने के लिए भी किया जा सकता है add_events() method का gtk.Widget class।
विशेष रूप से रुचि एक्सपोज़-ईवेंट सिग्नल है, जो ड्रॉइंगअरे कैनवास पहली बार आने पर उत्सर्जित होता है। 2D ऑब्जेक्ट्स को खींचने के लिए अलग-अलग तरीके, जो काहिरा लाइब्रेरी में परिभाषित किए गए हैं, इस कॉलबैक से एक्सपोज़-इवेंट सिग्नल से जुड़े हैं। ये विधियाँ काहिरा उपकरण के संदर्भ में संबंधित वस्तुओं को आकर्षित करती हैं।
निम्नलिखित उपलब्ध ड्राइंग विधियाँ हैं -
dc.rectangle (x, y, w, h) - यह निर्दिष्ट शीर्ष बाएँ समन्वय पर एक आयत खींचता है और जिसमें givwn चौड़ाई और ऊँचाई होती है।
dc.arc (x, y, r, a, a2) - यह दिए गए त्रिज्या और दो कोणों के साथ एक गोलाकार चाप खींचता है।
dc.line (X1, y1, x2, y2) - यह निर्देशांक के दो जोड़ों के बीच एक रेखा खींचता है।
dc.line_to (x, y) - यह वर्तमान स्थिति (x, y) से एक रेखा खींचती है
dc.show_text (str) - वर्तमान कर्सर स्थिति पर स्ट्रिंग खींचता है
dststroke () - रूपरेखा तैयार करता है
dffill () - वर्तमान रंग के साथ आकार भरता है
dc.set_color_rgb (आर, जी, बी) - 0.0 से 1.0 के बीच आर, जी और बी मानों की रूपरेखा तैयार करने और भरने के लिए रंग सेट करता है।
उदाहरण
निम्नलिखित स्क्रिप्ट काहिरा विधियों का उपयोग करके विभिन्न आकार और परीक्षण आकर्षित करती है।
import gtk
import math
class PyApp(gtk.Window):
def __init__(self):
super(PyApp, self).__init__()
self.set_title("Basic shapes using Cairo")
self.set_size_request(400, 250)
self.set_position(gtk.WIN_POS_CENTER)
self.connect("destroy", gtk.main_quit)
darea = gtk.DrawingArea()
darea.connect("expose-event", self.expose)
self.add(darea)
self.show_all()
def expose(self, widget, event):
cr = widget.window.cairo_create()
cr.set_line_width(2)
cr.set_source_rgb(0,0,1)
cr.rectangle(10,10,100,100)
cr.stroke()
cr.set_source_rgb(1,0,0)
cr.rectangle(10,125,100,100)
cr.stroke()
cr.set_source_rgb(0,1,0)
cr.rectangle(125,10,100,100)
cr.fill()
cr.set_source_rgb(0.5,0.6,0.7)
cr.rectangle(125,125,100,100)
cr.fill()
cr.arc(300, 50, 50,0, 2*math.pi)
cr.set_source_rgb(0.2,0.2,0.2)
cr.fill()
cr.arc(300, 200, 50, math.pi,0)
cr.set_source_rgb(0.1,0.1,0.1)
cr.stroke()
cr.move_to(50,240)
cr.show_text("Hello PyGTK")
cr.move_to(150,240)
cr.line_to(400,240)
cr.stroke()
PyApp()
gtk.main()
उपरोक्त स्क्रिप्ट निम्नलिखित आउटपुट उत्पन्न करेगा -