Turtle图形按键变色问题:hsv_to_rgb仅单次生效的技术问询
Turtle按键切换颜色仅生效一次的解决方案
问题核心:你定义的全局变量h在change_color函数中只被读取,从未被更新。每次按键调用change_color时,计算的都是初始值0 + 0.1,所以颜色不会变化。
关键修改点
- 在
change_color函数内通过global h声明要修改全局变量h,避免创建局部变量覆盖全局值 - 每次按键后更新
h的数值,并通过取模运算h %= 1保证h始终在HSV色调的有效范围(0~1)内
修改后的完整代码
from turtle import * from colorsys import * pencolor('blue') pensize(2) bgcolor('black') default_size = 0 h = 0 def move_up(): sety(ycor() + 50) def move_left(): setx(xcor() - 50) def move_right(): setx(xcor() + 50) def move_down(): sety(ycor() - 50) def change_color(): global h # 声明要修改全局变量h h += 0.1 # 每次按键更新h的值 h %= 1 # 保证h始终在0~1之间循环 c = hsv_to_rgb(h, 1, 1) color(c) def call_movement(): onkey(move_up, 'Up') onkey(move_left, "Left") onkey(move_right, "Right") onkey(move_down, "Down") listen() def color_change(): onkey(change_color, "+") listen() call_movement() color_change() done()
这样每次按下+键时,h的值会累加0.1并循环,颜色也会随之逐次切换。
内容的提问来源于stack exchange,提问作者sogwrlddd
相关产品推荐
相关产品推荐

