kivy 程序都是都需要繼承APP基類
而App類在Lib\site-packages\kivy\app.py文件定義
from kivy.event import EventDispatcher
class App(EventDispatcher):
pass
找到Lib\site-packages\kivy\event.py 裏面是這樣定義的
import kivy._event
__doc__ = kivy._event.__doc__
EventDispatcher = kivy._event.EventDispatcher
ObjectWithUid = kivy._event.ObjectWithUid
Observable = kivy._event.Observable
又引用了Lib\site-packages\kivy_event.pxd , 而pxd文件只是個類似c裏的頭文件(接口聲明), 真正的代碼實現在
Lib\site-packages\kivy_event.cp36-win32.pyd (pxd描述參考)[https://cloud.tencent.com/developer/news/180987]
那爲什麼在pycharm 裏查看時定義處時爲什麼會跳轉到.PyCharm2018.3\system\python_stubs\498501734\kivy_event.py 文件呢,
答案在這裏:
https://stackoverflow.com/questions/24266114/pycharm-what-is-python-stubs
寫就是說這個文件時pycahrm爲我們根據pyd文件生成的,爲方便調試代碼, 在.PyCharm2018.3\system\python_stubs\498501734\kivy\_event.py
文件都已經
有詳細的說明了:
# encoding: utf-8
# module kivy._event
# from xxxx\lib\site-packages\kivy\_event.cp36-win32.pyd
# by generator 1.146
"""
Event dispatcher
================
All objects that produce events in Kivy implement the :class:`EventDispatcher`
which provides a consistent interface for registering and manipulating event
handlers.
.. versionchanged:: 1.0.9
Property discovery and methods have been moved from the
:class:`~kivy.uix.widget.Widget` to the :class:`EventDispatcher`.
"""