在前面的文章《python小欢喜(六)动画 (1) pygame的安装与初步使用》中介绍了如何安装pygame。接下来用pygame实现一个简单的画笔程序。
与前面的简单动画相比,最大的不同之处在于,画笔程序需要处理用户的输入,用户可以用鼠标在屏幕上画出自己想画的任务图形。
实现效果
在pygame的窗口中,点击鼠标左键不放,通过拖动就可以绘制任意图形。
python代码如下:
# -*- coding:utf-8 -*-
# 简单画笔程序
import pygame # 导入pygame模块
pygame.init() # pygame的初始化操作
screen = pygame.display.set_mode([800,600]) # 设置窗口大小为800*600
pygame.display.set_caption("简单画笔") #设置窗口标题
keep_going = True # 控制事件循环是否结束的变量
YELLOW = (255,255,0) # 通过RGB值设置画笔颜色,目前设置为黄色
radius = 15 #设置画笔的粗细,画笔线条中的每一个点都是一个小圆形,设置这个圆形的半径
mousedown = False #记录鼠标的按键是否被按下(左键或右键都可以)
while keep_going: # 事件循环
for event in pygame.event.get(): # 取出当前的事件
if event.type == pygame.QUIT: # 如果当前事件是pygame的退出事件
keep_going = False # 将 keep_going 置为False ,导致退出事件循环
if event.type == pygame.MOUSEBUTTONDOWN: # 如果是鼠标按键被按下的事件
mousedown = True # mousedown 被置为True
if event.type == pygame.MOUSEBUTTONUP: # 如果是鼠标按键被松开的事件
mousedown = False # mousedown 被置为False
if mousedown: # 如果处于鼠标按键被按下状态
spot = pygame.mouse.get_pos() # 取得鼠标当前的位置,存放于spot变量中
pygame.draw.circle(screen, YELLOW, spot, radius) # 在鼠标当前位置处画一个圆,该圆的颜色,半径在前面已经设置过了
pygame.display.update() # 更新pygame的显示区域
pygame.quit() # 从事件循环中退出后,执行pygame.quit()导致整个程序退出
对源码中的每一行都加上了中文注释,阅读起来问题应该不大吧。
如果要换个画笔颜色,比如红色,并将线条变得更细一些,只需要改动第8行与第9行
YELLOW = (255,0,0) # 通过RGB值设置画笔颜色,目前设置为红色
radius = 5 #设置画笔的粗细,画笔线条中的每一个点都是一个小圆形,设置这个圆形的半径
效果如下:
更多的效果,读者朋友可以自己尝试修改源码来实现。