无法更改点颜色,尽管turtle的colormode()

2024-06-06 23:06:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在研究Python龟。我知道颜色模式应该是255 以使用RGB模式。我也知道正确的格式是 turtle.dot(int,"")。但我得到了一个错误:

TurtleGraphicsError: bad color arguments: None 

如何实现RGB

from turtle import Turtle, Screen
import turtle as t
import random

tim = t.Turtle()
t.colormode(255)
# t.colormode(255)

def rndmclr():
    r=random.randrange(255)
    g=random.randrange(255)
    b=random.randrange(255)
    t.pencolor((r,g,b))     

t.speed("fastest")

def tendots():  
    
    for i in range(10):
        t.dot(10,rndmclr())      
        t.penup()
        t.fd(30)
        t.pendown()
        t.fd(0) 

for i in range(10): 
      tendots()
      t.left(90)
      t.penup()
      t.fd(10)
      t.pendown()
      t.left(90)
      tendots()
      t.right(90)
      t.penup()
      t.fd(10)
      t.pendown()
      t.right(90)

screen = Screen()
screen.exitonclick()

Tags: importdef模式randomrgbscreendotturtle
1条回答
网友
1楼 · 发布于 2024-06-06 23:06:37

您的主要缺陷如下:

def rndmclr():
    r=random.randrange(255)
    g=random.randrange(255)
    b=random.randrange(255)
    t.pencolor((r,g,b))
 
# ...

    t.dot(10,rndmclr())

rndmclr()设置随机颜色,当它应该返回作为参数使用的颜色时,dot()当前返回None作为要使用的颜色。您的程序中还有其他缺陷,最重要的是双import海龟,它让您同时使用面向对象的API和函数式API,这只会导致麻烦选择一个并坚持使用它:

from turtle import Turtle, Screen
from random import randrange

def rndmclr():
    r = randrange(255)
    g = randrange(255)
    b = randrange(255)

    return (r, g, b)

def tendots():
    for _ in range(10):
        turtle.dot(10, rndmclr())
        turtle.penup()
        turtle.forward(30)
        turtle.pendown()

screen = Screen()
screen.colormode(255)

turtle = Turtle()
turtle.speed('fastest')

for _ in range(10):
    tendots()

    turtle.left(90)
    turtle.penup()
    turtle.forward(10)
    turtle.pendown()
    turtle.left(90)

    tendots()

    turtle.right(90)
    turtle.penup()
    turtle.forward(10)
    turtle.pendown()
    turtle.right(90)

screen.exitonclick()

enter image description here

相关问题 更多 >