设置按键退出python pygame动画(animation)程序,python检测键盘按键

功能:设置按键退出python pygame动画(animation)程序,python3.6检测键盘按键

 

pygame运行起来,不弄个强行终止都刹不住。。。。为此研究了一下怎么退出。

实现的效果是:按D键立即退出!!!其他键可以依键码进行设置。

# 将一个有完整图片路径的列表,展示为动画
def show_animation(animation_size=[960, 540], imgs_list_to_animate):
    num = len(imgs_list_to_animate) # img_list类似于 ['/home/user/1.jpg', ...]

    # 初始化
    pygame.init()

    # 创建窗口
    window = pygame.display.set_mode(animation_size)

    # 设置窗口标题
    pygame.display.set_caption('title')

    names = locals()  # locals() 函数会以字典类型返回当前位置的全部局部变量
    balls = []

    for i in range(num):
        frame = pygame.image.load(imgs_list_to_animate[i])
        frame = pygame.transform.scale(frame, tuple(animation_size), )
        names['bg_image%s' % i] = frame
        balls.append(names['bg_image%s' % i])

    # 第一组文字
    color_green = (255, 0, 0)

    # 创建一个Font对象,其中LOWRBI__.TTF为下载的字体库
    fontObj = pygame.font.SysFont('宋体', 20)

    # 创建一个存放文字surface对象,
    textSurfaceObj = fontObj.render(u'Start Frame', False, color_green)

    # 文字图像位置
    textRectObj = textSurfaceObj.get_rect()

    # print("Press 'D' to exit...")

    running = True
    while running:
        print('balls num=', len(balls)) # balls num= 70
        events = pygame.event.get()
        print('events num=', len(events))

        for i in range(num):
            window.blit(balls[i], (0, 0))
            if i == 0:
                window.blit(textSurfaceObj, textRectObj)
            print('i=%d/%d' % (i, num))

            pygame.display.update()  # 刷新窗口
            for event in events:
                if event.type == KEYDOWN:
                    if str(event.key) == '100': # 按 D 键(键码100)会立即退出当前动画显示程序
                        # break # 这里用break不会起作用
                        print('收到KEYDOWN按键:', str(event.key)) # str(event.key) 显示键码
                        running = False 

                --------# 检测 QUIT : 如果 QUIT, 终止主循环。这部分代码可以不用-------------
                elif event.type == QUIT:
                    print('收到QUIT按键:', str(event.key))
                    running = False 
                --------# 检测 QUIT : 如果 QUIT, 终止主循环。这部分代码可以不用-------------

                if running == False: # 退出最内层 for event 循环
                    break
            if running == False: # 退出外层 for i in range循环
                break
        if running == False: # 退出 pygame,作用与 pygame.init相反
            pygame.quit()

感谢:

https://stackoverflow.com/questions/19882415/closing-pygame-window

https://blog.csdn.net/feynman233/article/details/88827994

你可能感兴趣的:(Python,#,CV-基础)