python事件处理函数_pygame处理事件函数

这是学习嵩天老师的课程,习得并引以为笔记。

在pygame中同时仅能存在128个事件,pygame提供了八个事件处理函数,包括:

事件处理:pygame.event.get()、pygame.event.poll()、pygame.event.clear()

操作队列事件:pygame.event.set_blocked()、pygame.event.get_blocked()、pygam.event.set_allowed()

生成事件:pygame.event.post()、pygame.event.Event()

pygame.event.get() 从事件队列中获取队列事件列表,即获得所有被队列的事件。

for event in pygame.event.get():

if event.Type == pyagme.QUIT:

sys.exit()

增加参数获得某类或某些类事件:

pygame.event.get(type)

pygame.event.get(typelist)

而 pygame.event.poll() 从事件队列中获得一个事件

while True:

event = pygame.event.poll()

事件获取将从事件队列中删除。如果队列事件为空则返回event.NOEVENT。

pygame.event.clear() 从事件队列中删除事件,默认删除所有事件,该函数与pygame.event.get()类似,区别仅是不对事件进行处理,仅仅是删除而已。

也可以增加参数,指定删除某类或某些类事件

pygame.event.clear(type)

pygame.event.clear(typelist)

pygame.event.set_blocked(type or typelist) 控制哪些类型事件不允许被保存到队列事件中

pygame.event.set_allowed(type or typelist) 控制哪些类型事件允许被保存到队列事件中

pygame.event.get_blocked(type) 测试某个事件类型是否被事件队列所禁止,如果事件类型被禁止,则返回True,否则返回False。

pygeme.event.post(Event) 产生一个事件,并将其放入到事件队列中,一般用于放置用户自定义事件(pygame.USEREVENT),也可以用于放置系统自定义事件(键盘、鼠标等)给定参数。

pygame.event.Event(type, dict) 创建一个给定类型的事件,其中事件的属性和值采用字典类型复制,属性名采用字符串形式。如果创建已有类型,则属性要一致。

下面写一个代码,看一下是如何产生事件类型:

import pygame,sys

pygame.init()

screen = pygame.display.set_mode((600,400))

pygame.display.set_caption("pygame处理事件")

fps = 1

fclock = pygame.time.Clock()

num = 1

while True:

uevent = pygame.event.Event(pygame.KEYDOWN,{"unicode":123,"key":pygame.K_SPACE,"mod":pygame.KMOD_ALT})

pygame.event.post(uevent)

num = num+1

for event in pygame.event.get():

if event.type==pygame.QUIT:

sys.exit()

elif event.type == pygame.KEYDOWN:

if event.unicode == "":

print("[KEYDOWN {}]".format(num),"#",event.key,event.mod)

else:

print("[KEYDOWN {}]".format(num), event.unicode,event.key, event.mod)

pygame.display.update()

fclock.tick(fps)

每帧刷新一次,并产生一次键盘按下事件,并且被程序的处理事件机制捕获

原文链接:https://blog.csdn.net/qq_43873385/article/details/106584060

你可能感兴趣的:(python事件处理函数)