データ視覚化用の小さなツールを作成しています。GUI は Pygtk で作成されており、非常にシンプルです。ユーザーがファイル名を入力した後、「計算」ボタンを押して出力を確認できます。出力は pycairo によってレンダリングされ、gtk.DrawingArea に表示されます。
アプリケーションは次のように動作します。 ボタンが押されると、ファイルが処理され、そのコンテンツが特別なクラスに保存されます。このクラスはカスタム コンテナーです。GUI と共にインスタンス化され、空または塗りつぶされます。DrawingArea の公開イベントは、コンテナーを読み取ってそのコンテンツを描画する描画関数にリンクされています。コンテナーが空である限り、DrawingArea は空のままですが、calc がクリックされてファイルが読み込まれた後、DrawingArea はビジュアルで満たされるはずです。
問題は次のとおりです。 DrawingArea の更新を除いて、すべて正常に動作します。手動で公開を呼び出す方法がわかりません。calc を押した後、ウィンドウのサイズを変更して結果を確認する必要があります。
より具体的には、チュートリアルからこのコードをコピーしましたが、パラメーター イベントを自分で提供する方法がわかりません。
def do_expose_event(self,event):
# Create the cairo context
cr = self.window.cairo_create()
# Restrict Cairo to the exposed area; avoid extra work
cr.rectangle(event.area.x, event.area.y,
event.area.width, event.area.height)
cr.clip()
self.draw(cr, *self.window.get_size())