Sto cercando di creare un'applicazione di disegno semplice usando Python e gnomecanvas. Purtroppo, sembra che non ci sia documentazione per i collegamenti Python per gnomecanvas di sorta. Quindi, mi sto borbottando usando gli esempi di codice e cercando di indovinare dalle associazioni C.C'è un modo per aggiungere a un bpath canvas gnome esistente in Python?
Così com'è, ho il codice di lavoro, mantenendo un elenco di punti di corrente in un ictus e la generazione di un nuovo oggetto percorso da questa lista in ogni nuovo elemento:
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()
Questo mi sembra di essere un metodo piuttosto inefficiente: generare un nuovo oggetto ogni volta che si muove il puntatore; e considerando che sto ottenendo la precisione subpixel dal mio tablet questo è piuttosto spesso.
La mia domanda è: c'è un modo in cui posso semplicemente aggiungere al bpath esistente su ogni movimento del puntatore come farei nella versione C di questa libreria?
Su una nota correlata, c'è qualche documentazione per questa API perché ho fatto ore di googling che non mi hanno dato nulla in cambio.