2012-02-08 66 views

回答

4

如果我正確地理解你,你可以使用gobject.timeout_add來做到這一點。

+0

我已經使用過DBus編程,而timeout_add()正是你想要使用的。 – fandingo 2012-02-08 04:56:53

+1

真棒,像魅力一樣工作,謝謝你,正是我想要的。 **注意:任何將此解讀爲解決方案的人,請確保您的函數返回True或False,如果您返回True,它將永遠運行,如果不是,則返回False。 可以找到代碼:https://github.com/ingenuitas/SimpleCV/blob/master/SimpleCV/examples/display/gtk-example-camera.py – xamox 2012-02-08 20:01:43

3

這看起來像輪詢,這是不好的,因爲它是消耗資源的。事實上,你仍然應該使用事件,因爲應該觸發更新的事件應該在圖像發生變化時觸發。

但是,如果你想在後臺執行某些東西,也許你想要的是一個空閒的事件處理程序,每當程序沒有更多的事件處理時,它就會運行。爲此,使用g_idle_add。如傑里米提出的那樣,如果你想要執行一個動作,比如說每5秒鐘一次,那麼就使用一個定時器事件。您應該使用g_timeout_add_seconds一秒的時間(避免無緣無故喚醒CPU,這對於良好的電源管理非常有用),或者在毫秒級粒度下使用g_timeout_add