Function sety in turtle graphics color mixer

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • c0d3rX
    New Member
    • Nov 2018
    • 7

    Function sety in turtle graphics color mixer

    The following code is from turtle graphics demos, specifically the color mixer demo. The program allows you to adjust the background color of a window using three sliders corresponding to RGB values.

    In the following code there is a statement under the shift function "self.sety(max( 0,min(y,1)))". The purpose of this statement is unclear. Any thoughts on the matter?

    Code:
    # colormixer
    
    from turtle import Screen, Turtle, mainloop
    
    class ColorTurtle(Turtle):
    
        def __init__(self, x, y):
            Turtle.__init__(self)
            self.shape("turtle")
            self.resizemode("user")
            self.shapesize(3,3,5)
            self.pensize(10)
            self._color = [0,0,0]
            self.x = x
            self._color[x] = y
            self.color(self._color)
            self.speed(0)
            self.left(90)
            self.pu()
            self.goto(x,0)
            self.pd()
            self.sety(1)
            self.pu()
            self.sety(y)
            self.pencolor("gray25")
            self.ondrag(self.shift)
    
        def shift(self, x, y):
            self.sety(max(0,min(y,1)))
            self._color[self.x] = self.ycor()
            self.fillcolor(self._color)
            setbgcolor()
    
    def setbgcolor():
        screen.bgcolor(red.ycor(), green.ycor(), blue.ycor())
    
    def main():
        global screen, red, green, blue
        screen = Screen()
        screen.delay(0)
        screen.setworldcoordinates(-1, -0.3, 3, 1.3)
    
        red = ColorTurtle(0, .5)
        green = ColorTurtle(1, .5)
        blue = ColorTurtle(2, .5)
        setbgcolor()
    
        writer = Turtle()
        writer.ht()
        writer.pu()
        writer.goto(1,1.15)
        writer.write("DRAG!",align="center",font=("Arial",30,("bold","italic")))
        return "EVENTLOOP"
    
    if __name__ == "__main__":
        msg = main()
        print(msg)
        mainloop()
Working...