Próbuję wykonać prostą aplikację do rysowania za pomocą Python i gnomecanvas. Niestety, wydaje się, że nie ma dokumentacji dla powiązań Python dla gnomecanvas w ogóle. W związku z tym jestem nieudolny używając próbek kodu i próbując odgadnąć z wiązań C.Czy istnieje sposób dołączenia do istniejącej ścieżki bn na kanale gnoma w Pythonie?
Jak to jest, mam kod pracę utrzymując listę aktualnych punktów w udarze i generowania nowego obiektu ścieżki z tej listy w każdej nowej pozycji:
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()
Wydaje mi się dość nieefektywna metoda: generowanie nowego obiektu za każdym razem, gdy porusza się wskaźnik; i biorąc pod uwagę, że uzyskuję subpikselową precyzję z mojego tabletu, to jest to często raczej często.
Moje pytanie brzmi: czy istnieje sposób, dzięki któremu mogę po prostu dołączyć do istniejącej ścieżki bpath w każdym ruchu wskaźnika, tak jak w wersji C tej biblioteki?
Na pokrewnej notatce, czy jest jakaś dokumentacja dla tego interfejsu API, ponieważ wykonałem wiele godzin pracy w Google, które nie dały mi nic w zamian.