我創建了數據可視化小工具暴露事件。 GUI是用Pygtk創建的,非常簡單。在用戶輸入文件名後,他可以按下「calc」按鈕查看輸出。輸出由pycairo渲染並呈現在gtk.DrawingArea中。「手動」調用上gtk.DrawingArea
該應用程序的工作原理如下: 當按鈕被按下時處理的文件,其內容被保存在一個特殊的類。這個類是一個自定義容器:它與gui一起被實例化,並且是空的或者被填充的。 DrawingArea的公開事件鏈接到讀取容器並繪製其內容的繪圖函數。只要容器是空的,DrawingArea仍然是空的,但是在Calc被點擊並加載文件之後,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())
沒有幫助。這個揭露事件已經與這個函數連接了。加載數據後,我需要激發一個揭露事件。瞭解DrawingArea只有在程序認爲有必要時纔會刷新。要查看新數據,我必須調整窗口大小。 – lhk 2012-01-05 18:49:11