Python 中的事件
Manav Narula
2023年1月30日
事件處理建立了一個響應式應用程式,可以檢測並生成響應操作。
事件是物件檢測到的響應或動作。在 Python 中,事件處理是使用類完成的。
在 Python 中使用 tkinter
模組建立 GUI 應用程式
tkinter
模組用於建立 GUI 應用程式,這些應用程式等待使用者的響應並在圖形介面中執行功能。
使用 Python 處理事件的主要類
publisher
類生成一個事件。subscriber
類接收這些事件。
class sample_event(object):
def __init__(self):
self.__eventhandler_sample = []
def __iadd__(self, Eventhandler):
self.__eventhandler_sample.append(Eventhandler)
return self
def __isub__(self, Eventhandler):
self.__eventhandler_sample.remove(Eventhandler)
return self
def __call__(self, *args, **keywargs):
for eventhandler_sample in self.__eventhandler_sample:
eventhandler_sample(*args, **keywargs)
class MessToDisplay(object):
def __init__(self, val):
self.val = val
def PrintM(self):
print("Message for an event with value ", self.val)
class sample_class(object):
def __init__(self):
self.ob = sample_event()
def EHnew(self):
self.ob()
def anotherevent(self, objMeth):
self.ob += objMeth
def seq():
newsample = sample_class()
displayamess = MessToDisplay(5)
newsample.anotherevent(displayamess.PrintM)
newsample.EHnew()
seq()
輸出:
Message for an event with value 5
seq()
函式定義了不同事件的流程,以列印出訊息、附加訊息和刪除訊息。
Python 中有不同型別的事件。例如檢測按鍵
、游標移動
、滑鼠點選
,甚至基於計時器
的事件。
使用 pynput.keyboard
模組檢測 Python 中的按鍵
from pynput.keyboard import Key, Listener
def press_key(k):
print(k)
def release_key(k):
if k == Key.space:
return False
with Listener(on_press=press_key, on_release=release_key) as listener:
listener.join()
輸出:
'b'
Key.space
Listener()
函式通過執行 press_key
和 release_key
函式來檢測這些事件
需要按下空格鍵來停止這些事件的流動,因為它返回 false
並將停止 Listener()
函式。
作者: Manav Narula
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn