Python 中的事件
Manav Narula
2023年1月30日
Python
Python Event
事件處理建立了一個響應式應用程式,可以檢測並生成響應操作。
事件是物件檢測到的響應或動作。在 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() 函式。
Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
作者: 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