2014-11-17 10 views
6

मैं अपने आप जीटीके 3 सीख रहा हूं और अब मैं जीटीके पर फंस गया हूं। ड्रॉइंग एरिया। जीटीके में अधिकांश विगेट्स और फ़ंक्शंस के साथ, इस पर अद्यतन दस्तावेज और ट्यूटोरियल की कमी दिखाई देती है।जीटीके 3 ड्राइंग एरिया ट्यूटोरियल मौजूद प्रतीत नहीं होता है?

http://lazka.github.io/pgi-docs/Gtk-3.0/classes/index.html

हालांकि ड्राइंग क्षेत्र पेज कोई तरीकों का वर्णन किया है: मैं क्या मिल गया है के रूप में संदर्भ (उम्मीद यह कुछ अन्य खो Googlers में मदद मिलेगी) के लिए, lazka के स्वत: जनरेट प्रलेखन मेरे सबसे अच्छे संसाधन किया गया है।

http://lazka.github.io/pgi-docs/Gtk-3.0/classes/DrawingArea.html

इस ओर जाता है मुझे विश्वास है कि मैं जीटीके और इस विजेट का एक मूलभूत गलतफहमी है, लेकिन मैं यह कैसे के साथ काम करने समझा कुछ भी नहीं मिल सकता है! एकमात्र ट्यूटोरियल जो मैं पा सकता था वे थे, लेकिन वे सभी पुराने संस्करणों के लिए हैं;

3 कि यह शिक्षण सामग्री का सबसे अच्छा है, लेकिन मैं इसे GTK3 में काम करने के लिए प्राप्त करने के लिए नहीं कर पा रहे, और ईमानदारी से इसकी सुंदर उन्नत है। कई चीजें भी अनुचित हैं और प्रतिस्थापन सुंदर गुप्त होने लगते हैं और स्पष्ट नहीं कर रहे हैं कि वे कैसे DrawingArea के साथ काम: http://lazka.github.io/pgi-docs/Gtk-3.0/classes/Widget.html#Gtk.Widget.set_style

आधिकारिक ट्यूटोरियल इस पर एक खंड नहीं है, और काफी एक लंबा में अपडेट नहीं किया गया समय:

http://python-gtk-3-tutorial.readthedocs.org/en/latest/objects.html

https://github.com/sebp/PyGObject-Tutorial

मेरा प्रश्न अब क्या किसी मदद कर सकता है मुझे समझ कैसे Gtk.DrawingArea साथ आकर्षित करने के लिए है? क्या वहाँ एक gtk3 ट्यूटोरियल है?

इस समय मेरा लक्ष्य एक एल्गोरिदम के आउटपुट के आधार पर ड्राइंग क्षेत्र पर स्वचालित रूप से काले बिंदु खींचना है, और परिणाम प्रदर्शित करना है। मैं अपना कोड दिखाऊंगा लेकिन मुझे मुश्किल से कुछ भी है।

+0

ध्यान दें कि 'GtkDrawingArea' सही मायने में किसी भी विधि नहीं है! यह सभी गुणों के साथ बस एक खाली विजेट है ताकि आप इसे 'ड्रा' सिग्नल में खींच सकें। – ptomato

+0

दिलचस्प! मैंने थोड़ी देर के लिए ड्रॉ सिग्नल के साथ संघर्ष किया, मैंने देखा कि जब मैंने इसे कॉलबैक (ऑन_ड्रा) से जोड़ा था, तो सिग्नल चालू रहेगा और कॉलबैक प्रभावी रूप से लूप में था! जब मैं इसे चाहता था, तो हैंडलर आईडी को अनवरोधित करके और फिर कॉलबैक के अंत में इसे अवरुद्ध करके मैंने इसके आसपास काम किया, लेकिन मुझे नहीं लगता कि ऐसा करने का सही तरीका है। क्या आप कस्टम सिग्नल बनाने या किसी और सलाह के लिए शायद आगे पढ़ रहे हैं? क्या आप एक पिक्सेल लिखने के लिए cairo.context में एक विधि भी जान लेंगे? मुझे सबसे नज़दीक मिला जो बहुत छोटा वर्ग बना रहा था। – Swashy

+0

यदि आपके पास अतिरिक्त प्रश्न हैं, तो एक नया प्रश्न खोलना सबसे अच्छा है, ताकि सभी को जवाब देने का मौका मिले, लेकिन - जब भी विजेट को रेड्रा की आवश्यकता होती है तो ड्रॉ सिग्नल उत्सर्जित होना चाहिए। (एक बार कुछ खींचा जाने पर, यह भूल जाता है, और इसलिए यदि कोई और विंडो इसके ऊपर चली जाती है तो आपको इसे फिर से निकालना होगा।) और काहिरा पिक्सेल में सौदा नहीं करता है, इसलिए आप जो हासिल करने की कोशिश कर रहे हैं उसके आधार पर एक छोटा वर्ग संभवतः सही है। – ptomato

उत्तर

7

आप मूल रूप से :: ड्रॉ सिग्नल से कनेक्ट होते हैं और पाइकेरो का उपयोग करके हैंडलर में आकर्षित करते हैं। और अगर आप फिर से निकालना चाहते हैं तो queue_draw/queue_draw_area() का उपयोग करें।

उदाहरण के लिए http://zetcode.com/gfx/pycairo/basicdrawing/ देखें

+1

व्हाउ लज्का खुद! धन्यवाद, यह वही है जो मैं ढूंढ रहा था। – Swashy

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