我正在尝试使用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)
答案 0 :(得分:0)
当前的问题是这个功能:
def checked(x,y):
global color
if x in range(-200, -150) and y in range(200,250):
color = (255, 0, 0)
x
和y
参数是浮点数,因此永远不会在整数范围内找到。而是尝试:
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()
现在点击其中一个复选框会将其变为绿色而另一个变为白色。这应该为您提供基础,使复选框能够满足您的需求。