一、起步(1.6事件)

1.6事件

Kivy基本上是基于事件驅(qū)動的,這也就意味著程序執(zhí)行順序被事件所決定。

  1. 時鐘事件

    時鐘對象允許你使用schedule_once()來定時執(zhí)行一個函數(shù);或者使用schedule_interval()重復(fù)執(zhí)行一個函數(shù)。

    你也可以利用create_trigger()創(chuàng)建一個觸發(fā)事件,觸發(fā)器只能被一個框架調(diào)用一次,即使你為該回調(diào)函數(shù)設(shè)置了多次觸發(fā)。

  2. 輸入事件

    所有的鼠標(biāo)點擊、觸摸、滾輪滾動事件都是MotionEvent事件的一部分;輸入事件擴展自輸入處理,當(dāng)在窗口類執(zhí)行on_motion事件時被發(fā)送。在部件中這些事件生成為on_touch_down()on_touch_move()on_touch_up()事件。

    要進(jìn)一步了解,請參閱輸入管理

  3. 類事件

    部件里,我們的事件分發(fā)類EventDispatcher被用來有效的管理屬性值的變動,這意味著當(dāng)一個部件改變了它的位置、尺寸,相應(yīng)的事件就會自動的發(fā)送。

    并且,正如在按鈕部件中,on_presson_release等事件所展示的那樣,你可以利用register_event_type創(chuàng)建自定義事件,

    另外你需要注意的是,如果你重載了一個事件,那么你就必須處理它在基類中定義的所有行為。一個最容易的方式是調(diào)用super():

def on_touch_down(self, touch):        
    if super(OurClassName, self).on_touch_down(touch):
        return True
    if not self.collide_point(touch.x, touch.y):
        return False
    print('you touched me!')
    return True
如果想對事件有更深入的了解,請參閱[事件和屬性](https://kivy.org/docs/guide/events.html)文檔

下節(jié)預(yù)告:1.7 非部件類

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容