还在羡慕别人能写代码画画吗?今天,我们就用不到 100 行的 Python 代码,亲手打造一个属于你自己的“灵魂画板”!
不仅能用鼠标画画,还能实现“双击清屏”的神奇功能,解放你随时想重来的创作冲动~🖌️

🎨 功能亮点速览
左键单击:开始画点,随性涂鸦
按住左键拖动:连续画线,丝滑流畅
快速双击左键:一键清屏,重新开始
黑白极简风:经典配色,专注创作
我们这个画板实现起来其实非常简单,主要靠以下几个“小魔法”:
通过 pygame.MOUSEBUTTONDOWN、MOUSEBUTTONUP、MOUSEMOTION 这三个事件,我们就能知道鼠标什么时候按下、松开、移动。
用一个“计时小工具”记录上次点击的时间,如果两次点击间隔很短(比如 300 毫秒内),就判定为双击 → 执行清屏!
单击时画一个小圆点,拖动时则在小点之间连上短线,这样画出来的线条既自然又流畅,不会断断续续。
# 检测是否双击(两次点击时间间隔小于设定值)time_since_last_click = current_time - last_click_timelast_click_time = current_timeif time_since_last_click < double_click_delay:screen.fill(BACKGROUND) # 清屏!else:drawing = Truepygame.draw.circle(screen, FOREGROUND, pos, 1) # 画一个小点
这段就是双击清屏的“心脏”,简单吧?
安装 pygame:
pip install pygame把代码保存为 Drawin.py
运行:
python Drawin.py4.开始你的灵魂创作吧!
这个画板只是一个起点,你可以轻松加入更多酷炫功能:
🎨 调色盘功能:点击切换颜色
📏 笔刷粗细:滚动鼠标滚轮调整
💾 保存作品:按 Ctrl+S 保存图片
🔄 撤销/重做:让创作更自由
写代码不只是写逻辑、做项目,也可以是一种创作、一种表达。用几十行代码,创造一个能互动、能画画的程序,这种成就感,是单纯的调用现成工具无法比拟的。
动手试试吧,或许你会发现:原来我也可以是一个会写代码的画家🎨👨💻
附完整代码
import pygameimport sys# 初始化pygamepygame.init()# 设置窗口尺寸WIDTH, HEIGHT = 800, 600screen = pygame.display.set_mode((WIDTH, HEIGHT))pygame.display.set_caption("简易绘画程序 - 左键画点,双击清屏")# 颜色定义BACKGROUND = (255, 255, 255) # 白色背景FOREGROUND = (0, 0, 0) # 黑色画笔# 初始化变量clock = pygame.time.Clock()drawing = Falselast_click_time = 0 # 用于检测双击double_click_delay = 300 # 双击延迟时间(毫秒)# 填充背景色screen.fill(BACKGROUND)pygame.display.flip()# 主循环running = Truewhile running:current_time = pygame.time.get_ticks()for event in pygame.event.get():if event.type == pygame.QUIT:running = False# 鼠标按下事件elif event.type == pygame.MOUSEBUTTONDOWN and event.button == 1:# 检测是否双击(两次点击时间间隔小于设定值)time_since_last_click = current_time - last_click_timelast_click_time = current_time# 如果是双击,清屏if time_since_last_click < double_click_delay:screen.fill(BACKGROUND)pygame.display.flip()else:# 单次点击,开始画点drawing = Truepos = pygame.mouse.get_pos()pygame.draw.circle(screen, FOREGROUND, pos, 1)pygame.display.flip()# 鼠标松开事件elif event.type == pygame.MOUSEBUTTONUP and event.button == 1:drawing = False# 鼠标移动事件elif event.type == pygame.MOUSEMOTION:if drawing:# 获取鼠标当前位置pos = pygame.mouse.get_pos()# 绘制小圆点(模拟铅笔效果)pygame.draw.circle(screen, FOREGROUND, pos, 1)# 在连续点之间绘制短线,使线条更平滑if hasattr(event, 'rel'):# 获取鼠标相对移动距离rel_x, rel_y = event.relif abs(rel_x) > 1 or abs(rel_y) > 1:# 在起点和终点之间绘制短线prev_pos = (pos[0] - rel_x, pos[1] - rel_y)pygame.draw.line(screen, FOREGROUND, prev_pos, pos, 1)pygame.display.flip()# 控制帧率clock.tick(60)# 退出pygamepygame.quit()sys.exit()
欢迎自取、修改、再创造!如果你做出了更有趣的版本,欢迎在评论区分享~下期我们可以一起实现“彩色画笔”和“橡皮擦”功能,敬请期待!
关注我,一起用代码画画,用创意编程!#Python#编程创意#pygame#画图程序#代码画画
代码已备好,画布已就位。打开编辑器,运行它,开始创作你的第一个程序画作吧!