Estoy tratando de hacer una aplicación de dibujo simple usando Python y gnomecanvas. Lamentablemente, parece que no hay documentación para los enlaces de Python para gnomecanvas en absoluto. Por lo tanto, estoy torciendo el uso de muestras de código y tratando de adivinar a partir de los enlaces de C.¿Hay alguna manera de anexar un bpath canvas existente en Python?
Como es, tengo el código de trabajo, manteniendo una lista de puntos actuales en un accidente cerebrovascular y la generación de un nuevo objeto de trazado de esta lista en cada elemento nuevo:
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()
Esto me parece que es un método bastante ineficiente: generar un nuevo objeto cada vez que se mueve el puntero; y teniendo en cuenta que obtengo una precisión de subpixel desde mi tableta, esto es bastante a menudo.
Mi pregunta es: ¿hay alguna manera por la que simplemente pueda agregar al bpath existente en cada movimiento del puntero como lo haría en la versión C de esta biblioteca?
En una nota relacionada, ¿hay alguna documentación para esta API porque he hecho hora de buscar en Google, que me han dado nada a cambio.