2016-03-24 6 views
1

私はGPSDのメンテナーです。 pygtkのgobjectバインディングが廃止されたことを知り、PythonテストクライアントをPython-GIにフォワードポートしようとしています。私はpygi-convert.sh scriptを使用してxgpsを少し難なく移植しましたが、xgpsspeedで難しかったです。Python-giに移植するときのCairoコンテキストフィールドが不明です

xgpsspeedでpygi-convert.shを実行した後、まず "expose_event"シグナルを手動で修正して、 "draw"に変更しなければなりません。私はこれが成功したxgpsポートで同じことをしなければならないので、これを期待していました。はっきり方法ハンドラにコードのこのセクションに関連

Traceback (most recent call last): 
    File "./xgpsspeed", line 72, in draw 
    event.area.x, 
AttributeError: 'cairo.Context' object has no attribute 'area' 

:パッチを当てたバージョンを実行して

は、このエラーがスローされます

def draw(self, _unused, event, _empty=None): 
    self.cr = self.get_window().cairo_create() 
    self.cr.rectangle(
     event.area.x, 
     event.area.y, 
     event.area.width, 
     event.area.height 
    ) 

マイサーチ-FUは、明白な理由を上げていませんイベントの引数がカイロのコンテキストを3.xの下に渡すことを期待しているイベントではなく、2.x未満になっています。私は、ハンドラシグネチャが変更されたとしか推測できませんが、問題に対処するドキュメントは見つかりません。

答えて

2

Google検索でこれを見つけた人は、自分の質問に答えてください。

はい、drawメソッドでは、3.xでは異なる署名が使用されます。その署名にはカイロの文脈が含まれていますが、ではなく、 Gdkは2.xのようなイベントを公開します。

私はサイザー割り当てイベントのハンドラを作成することによって、次のステップに取得することができた:

def on_size_allocate(self, _unused, allocation): self.width = allocation.width self.height = allocation.height

、その後、この方法で

self.cr.rectangle(0, 0, self.width, self.height)

として矩形ドローを書きます実際に公開イベントのコンテンツはもう必要ありませんでした。

しかし、x、y argsに0を挿入すると、メソッドが相対座標をとり、微妙に間違っている可能性があります。

この資料に関する資料は恐ろしいです。

関連する問題