2014-02-19 29 views
0

我知道您需要在PyGObject中繼承Gtk.DrawingArea以創建自定義小部件。然後,您的draw信號連接到一個回調,看起來像這樣:PyGObject自定義小部件:如何繪製一個無效區域?

def on_draw(drawing_area, cr): 
    # do something with cr 
    return False 

要問了重繪,你會打電話my_widget.queue_draw()

現在,我知道您可能會要求使用my_widget.queue_draw_area()重新繪製表面的特定區域。當您的on_draw回調在此之後被調用時,您如何知道要繪製的區域?

回答

1

draw虛擬函數被調用,無效區域已經是在Cairo上下文中施加的剪輯的一部分。

如果您想知道剪輯區域的範圍,您可以使用Python包裝器gdk_cairo_get_clip_rectangle()

+1

好的,謝謝。它似乎是'Gdk.cairo_get_clip_rectangle'。 – eepp