मैं पाइथन और gnomecanvas का उपयोग कर एक साधारण ड्राइंग अनुप्रयोग बनाने की कोशिश कर रहा हूँ। अफसोस की बात है कि, gnomecanvas के लिए पाइथन बाइंडिंग के लिए कोई प्रलेखन प्रतीत नहीं होता है। इस प्रकार, मैं कोड नमूने का उपयोग करके और सी बाइंडिंग से अनुमान लगाने की कोशिश कर रहा हूं।क्या Python में मौजूदा gnome canvas bpath में शामिल करने का कोई तरीका है?
यह है के रूप में, मैं प्रत्येक नए आइटम पर इस सूची में से एक स्ट्रोक में वर्तमान बिंदुओं की एक सूची रखने और एक नया पथ वस्तु उत्पन्न करके काम कर कोड है:
def get_pointer_coords(self, event):
return self.window_to_world(event.x, event.y)
def render_path(self):
path_def = gnomecanvas.path_def_new(self.cur_path)
self.current_item.set_bpath(path_def)
def button_press(self, event):
is_core = event.device is gdk.device_get_core_pointer()
if is_core:
return
self.drawing = True
(x, y) = self.get_pointer_coords(event)
self.cur_path = [(gnomecanvas.MOVETO_OPEN, x, y)]
self.current_item = self.root().add(gnomecanvas.CanvasBpath
, outline_color="#A6E22E"
, width_pixels=1
, cap_style=gdk.CAP_ROUND
)
def button_release(self, event):
self.drawing = False
def motion_notify(self, event):
is_core = event.device is gdk.device_get_core_pointer()
if not is_core and self.drawing:
(x, y) = self.get_pointer_coords(event)
self.cur_path.append((gnomecanvas.LINETO, x, y))
self.render_path()
यह मुझे लगता है होना करने के लिए एक बल्कि अक्षम विधि: जब भी पॉइंटर चलता है तो एक नई वस्तु उत्पन्न करना; और मुझे लगता है कि मुझे अपने टैबलेट से उप-पिक्सेल परिशुद्धता मिल रही है, यह है, बल्कि है।
मेरा प्रश्न है: क्या कोई तरीका है जिसके द्वारा मैं प्रत्येक पॉइंटर गति पर मौजूदा बीपीएथ में बस जोड़ सकता हूं जैसा कि मैं इस पुस्तकालय के सी संस्करण में करता हूं?
संबंधित नोट पर, इस एपीआई के लिए कोई दस्तावेज है क्योंकि मैंने गुगलिंग के घंटों का काम किया है जिसने मुझे बदले में कुछ भी नहीं दिया है।