稍后在Python中更改龟图的颜色

时间:2017-05-25 22:24:59

标签: python python-3.x turtle-graphics

我正在尝试使用turtle模块为Python中的项目重新创建一个复选框。为了做到这一点,我想象在制作复选框时乌龟的颜色是什么都没有,一旦用户点击框,它就会改变颜色。我使用了一个变量,但它似乎不起作用。

color = ((0,255,0))
def Options():
    global color
    opts = turtle.Screen()
    opts.setup(800,800)
    opts.reset()
    opts.title('Options')
    turtle.onscreenclick(None)
    boxes = turtle.Turtle()
    boxes.ht()
    boxes.up()
    boxes.sety(300)
    boxes.write('Character Control', align = 'center', font = ('Verdana', 30, 'normal'))
    boxes.goto(-200,250)
    boxes.pd()
    boxes.begin_fill()
    for i in range(4):
        boxes.fd(50)
        boxes.rt(90)
    boxes.color(color)
    boxes.end_fill()
    boxes.up()
    boxes.goto(0,207)
    boxes.write('Attracted to food.', align = 'center', font = ('Verdana', 20, 'normal'))
    boxes.goto(-200,180)
    boxes.pd()
    for i in range(4):
        boxes.fd(50)
        boxes.rt(90)
    boxes.up()
    boxes.goto(14, 140)
    boxes.write('Attracted to poison.', align = 'center', font = ('Verdana', 20, 'normal'))
    turtle.listen()
    turtle.onscreenclick(checked)
def checked(x,y):
    global color
    if x in range(-200, -150) and y in range(200,250):
        color = (255, 0, 0)

1 个答案:

答案 0 :(得分:0)

当前的问题是这个功能:

def checked(x,y):
    global color
    if x in range(-200, -150) and y in range(200,250):
        color = (255, 0, 0)

xy参数是浮点数,因此永远不会在整数范围内找到。而是尝试:

def checked(x, y):
    global color

    if -200 < x < -150 and 200 < y < 250:
        color = (255, 0, 0)
  我想象着乌龟制作时的颜色   复选框将是什么,一旦用户点击该框,它   会改变颜色。

当您成功点击一个方框并重置color变量时,它对乌龟或方框没有影响。它只是设置一个变量。你缺乏足够的代码来让盒子做点什么。

然而,这是解决问题的错误方法。更简单的方法是使每个复选框都成为乌龟,并设置各自的onclick()事件处理程序而不是屏幕的全局处理程序。以下是基于现有代码的示例:

import turtle

screen = turtle.Screen()
screen.colormode(255)

color = (0, 255, 0)

STAMP_SIZE = 20

box1 = box2 = None

def Options():
    global box1, box2

    opts = turtle.Screen()
    opts.setup(800, 800)
    opts.reset()
    opts.title('Options')

    boxes = turtle.Turtle(visible=False)
    boxes.up()
    boxes.sety(300)
    boxes.write('Character Control', align='center', font=('Verdana', 30, 'normal'))
    boxes.up()

    box1 = turtle.Turtle('square', visible=False)
    box1.shapesize(50 / STAMP_SIZE)
    box1.penup()
    box1.goto(-200, 225)
    box1.color('black', color)
    box1.onclick(checked1)
    box1.showturtle()

    boxes.goto(0, 207)
    boxes.write('Attracted to food.', align='center', font=('Verdana', 20, 'normal'))

    box2 = turtle.Turtle('square', visible=False)
    box2.shapesize(50 / STAMP_SIZE)
    box2.penup()
    box2.goto(-200, 155)
    box2.color('black', 'white')
    box2.onclick(checked2)
    box2.showturtle()

    boxes.goto(14, 140)
    boxes.write('Attracted to poison.', align='center', font=('Verdana', 20, 'normal'))

def checked1(x, y):
    box2.fillcolor('white')
    box1.fillcolor(color)

def checked2(x, y):
    box1.fillcolor('white')
    box2.fillcolor(color)


Options()

turtle.mainloop()

现在点击其中一个复选框会将其变为绿色而另一个变为白色。这应该为您提供基础,使复选框能够满足您的需求。