无法在功能中获得正确的颜色

时间:2012-10-11 20:32:55

标签: python turtle-graphics

from turtle import *

reset()
setworldcoordinates(0, 500, 600, 0)

def rectangle(a, b, c, d, pen_color, fill_color, pensize):
    up()
    setpos (a,b)
    down()
    fd (c-a)
    left(90)
    fd(d-b)
    left (90)
    fd (c-a)
    left (90)
    fd (d-b)
    left(90)

    p = pen_color.strip("pen_color=")
    pen_color(p)
    s = fill_color.strip("fill_color=")
    fill_color(värv2)
    a = pensize.strip("pensize=")
    a = int(a) 
    pensize(a)


rectangle(10,10,200,100, pen_color="red", fill_color="blue", pensize=3)

问题是我无法在最后一行获得这些颜色。如果我启动该程序,它将不会使pen_color为红色,fill_color为蓝色和pensize 3.它保持正常。知道如何获得这些颜色吗?如何使该功能从最后一行读取那些颜色?提前谢谢。

2 个答案:

答案 0 :(得分:1)

在前两次调用strip时,删除字符串参数并删除整行strip

p = pen_color.strip()
pen_color(p)
s = fill_color.strip()
fill_color(s)
a = int(a) 
pensize(a)

此代码块必须在真实绘图完成之前,直接在def rectangle...

之后

答案 1 :(得分:0)

这个问题似乎可以归结为两个问题:OP方面的一种误解:当您传递命名参数时,您必须以某种方式剥离名称;通配符导入乌龟,然后使用与乌龟函数名称和/或不正确的乌龟方法名称匹配的变量导致OP出现设计错误。修改后的代码:

from turtle import *

setworldcoordinates(0, 500, 600, 0)

def rectangle(a, b, c, d, pen_color, fill_color, pen_size):
    pencolor(pen_color)
    fillcolor(fill_color)
    pensize(pen_size)

    up()
    setpos(a, b)
    down()

    begin_fill()
    fd(c - a)
    left(90)
    fd(d - b)
    left(90)
    fd(c - a)
    left(90)
    fd(d - b)
    end_fill()

    left(90)

rectangle(10, 10, 200, 100, pen_color="red", fill_color="blue", pen_size=3)

mainloop()