私はPythonとgnomecanvasを使って簡単な描画アプリケーションを作ろうとしています。悲しいことに、gnomecanvasのPythonバインディングに関するドキュメントはまったくありません。したがって、コードサンプルを使用してCバインディングから推測しようとしています。そのまま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()
これがあることを私には思えますむしろ非効率的な方法:ポインタが動くたびに新しいオブジェクトを生成する。私はタブレットからサブピクセルの精度を得ていると考えていますが、これはで、たびたびです。
私の質問は、このライブラリのCバージョンのように、各ポインタモーションの既存のbpathに単純に追加できる方法はありますか?
関連するノートでは、私は何も返されなかったGoogle検索を何時間も行っているため、このAPIのドキュメントはありますか?