[Python2] use in python turtle turtle drawing learning module (python interesting first experience)

Turtle drawing

Turtle drawing Python is very popular drawing tools. In 1966, Dr. Simon Papert invented a special children to learn programming language - LOGO language . It is distinguished by programming the command of a small turtle draw on the screen.

Sea turtles and Python built drawing module, copy all the features of the original drawing of the turtle.

          In the following procedure, you will find a turtle.mainloop (), this method last used in drawing turtle Do not allow the drawing window closed at the end of the draw

          Tkinter module ( "Tk Interface") is a Python interface to .Tk standard Tk GUI toolkit and Tkinter works on most Unix use under the platform, the same can be applied to both Windows and Macintosh systems can be achieved subsequent versions .Tk8.0 local style window, and run well in the vast majority of platforms

There are explained a bit better understanding of the links in this article: https://blog.csdn.net/San__Qi/article/details/100568682

mainloop function of the substance in Python tkinter

Text
Here are the steps most general tkinter programmers are common, it's the code to do the following things:
1. Load suffering from inter module in a component class.
2. Create an instance of the component class label class
3. Package new tab within parent components.
4. Call the main loop, the display window, and began tkinter event loop.
mainloop last execution method, the label is displayed on the screen, enter the wait state (Note: If the component is not packaged, will not be displayed in the window), ready to respond to GUI events initiated by the user. In mainloop function, internal tkinter will monitor these events, such as keyboard activity, mouse clicks, and so on. In fact, tkinter of mainloop Python function with the following pseudo-code is essentially the same:

def mainloop():
    while the main window has not been closed:
        if an event has occurred:
            run the associated event handler function


Due to this event model, as long as the GUI is still on the screen, mainloop call will not return to execute code. When we write large code, only after calling mainloop practice is to register call manager in response to events. Until a termination condition is satisfied, calls Tk () to quit the example of interrupt mainloop performed. In fact sys.exit function can also be used to exit the GUI, it is an exception and then exit the program by throwing, the exception can be captured (do not adopt os._exit method, it can also quit the whole program, but it does not It will perform cleanup actions, and it can not be caught). Window (e.g., Tk root window, TopLevel instance) destroy function can also be used to close the GUI, but we generally do not use this method, but it is different from the quit function, when a plurality of programs Tk root window, destroy only after the last window is closed when leaving the root GUI.

Of course, we also mainloop can filter and other operations of these events, but this is no big associated with this article.

Summary from "Python Programming" ---- O'REILLY the fourth edition.

turtle module in the method

  • Import module

    When using the module needs to be imported in Python, for example, when drawing turtle need to import import turtle

  • 'Summoned' the turtles

    Turtle drawing small turtles (pen) is an arrow original shape, we can use the method to shape the inside of the turtle change its shape.

    import turtle
    
    turtle.shape('turtle')


    This put it into a shape of a small turtle.
    Other shapes also: "arrow", "circle" , "square", "triangle", "classic".

  • go ahead

    A method to control the use of forward hatchlings facing forward in the direction of

    import turtle
    turtle.shape('turtle')
    turtle.forward(100)

  • Circle

    The method used to command a small circle to draw a circle turtles
     

    import turtle
    turtle.shape('turtle')
    turtle.circle(50)
     

    Wherein the radius of the circle behind the number in parentheses is the circle size, in pixels

  • Turn

    The method may be controlled using the left to the left steering hatchlings

    import turtle
    turtle.shape('turtle')
    turtle.left(45)
    turtle.forward(100)
     

    This code hatchlings can be controlled to 45 degrees to the left, and then proceeds to draw a straight line.

  •  

    Draw a square

    import turtle
    turtle.shape('turtle')
    turtle.forward(100)
    turtle.left(90)
    turtle.forward(100)
    turtle.left(90)
    turtle.forward(100)
    turtle.left(90)
    turtle.forward(100)
    turtle.left(90)
    turtle.mainloop()

  • Drawing snowman

    import turtle
    turtle.shape('turtle')
    turtle.circle(50)
    turtle.left(180)
    turtle.circle(100)
    turtle.mainloop()

  • forward forward - backward backward

    import turtle
    turtle.shape('turtle')
    turtle.backward(100)

  • left left - right turn right

    import turtle
    turtle.right(45)
    turtle.forward(100)

  • Red Square

    import turtle
    
    turtle.pensize(4)
    turtle.pencolor('red')
    
    turtle.forward(100)
    turtle.right(90)
    turtle.forward(100)
    turtle.right(90)
    turtle.forward(100)
    turtle.right(90)
    turtle.forward(100)
    
    turtle.mainloop()

  • Draw Flag

    """
    用Python的turtle模块绘制国旗
    """
    import turtle
    
    
    def draw_rectangle(x, y, width, height):
        """绘制矩形"""
        turtle.goto(x, y)
        turtle.pencolor('red')
        turtle.fillcolor('red')
        turtle.begin_fill()
        for i in range(2):
            turtle.forward(width)
            turtle.left(90)
            turtle.forward(height)
            turtle.left(90)
        turtle.end_fill()
    
    
    def draw_star(x, y, radius):
        """绘制五角星"""
        turtle.setpos(x, y)
        pos1 = turtle.pos()
        turtle.circle(-radius, 72)
        pos2 = turtle.pos()
        turtle.circle(-radius, 72)
        pos3 = turtle.pos()
        turtle.circle(-radius, 72)
        pos4 = turtle.pos()
        turtle.circle(-radius, 72)
        pos5 = turtle.pos()
        turtle.color('yellow', 'yellow')
        turtle.begin_fill()
        turtle.goto(pos3)
        turtle.goto(pos1)
        turtle.goto(pos4)
        turtle.goto(pos2)
        turtle.goto(pos5)
        turtle.end_fill()
    
    
    def main():
        """主程序"""
        turtle.speed(12)
        turtle.penup()
        x, y = -270, -180
        # 画国旗主体
        width, height = 540, 360
        draw_rectangle(x, y, width, height)
        # 画大星星
        pice = 22
        center_x, center_y = x + 5 * pice, y + height - pice * 5
        turtle.goto(center_x, center_y)
        turtle.left(90)
        turtle.forward(pice * 3)
        turtle.right(90)
        draw_star(turtle.xcor(), turtle.ycor(), pice * 3)
        x_poses, y_poses = [10, 12, 12, 10], [2, 4, 7, 9]
        # 画小星星
        for x_pos, y_pos in zip(x_poses, y_poses):
            turtle.goto(x + x_pos * pice, y + height - y_pos * pice)
            turtle.left(turtle.towards(center_x, center_y) - turtle.heading())
            turtle.forward(pice)
            turtle.right(90)
            draw_star(turtle.xcor(), turtle.ycor(), pice)
        # 隐藏海龟
        turtle.ht()
        # 显示绘图窗口
        turtle.mainloop()
    
    
    if __name__ == '__main__':
        main()

  • Draw pig Page

    """
    绘制小猪佩奇
    """
    from turtle import *
    
    
    def nose(x,y):
        """画鼻子"""
        penup()
        # 将海龟移动到指定的坐标
        goto(x,y)
        pendown()
        # 设置海龟的方向(0-东、90-北、180-西、270-南)
        setheading(-30)
        begin_fill()
        a = 0.4
        for i in range(120):
            if 0 <= i < 30 or 60 <= i <90:
                a = a + 0.08
                # 向左转3度
                left(3)
                # 向前走
                forward(a)
            else:
                a = a - 0.08
                left(3)
                forward(a)
        end_fill()
        penup()
        setheading(90)
        forward(25)
        setheading(0)
        forward(10)
        pendown()
        # 设置画笔的颜色(红, 绿, 蓝)
        pencolor(255, 155, 192)
        setheading(10)
        begin_fill()
        circle(5)
        color(160, 82, 45)
        end_fill()
        penup()
        setheading(0)
        forward(20)
        pendown()
        pencolor(255, 155, 192)
        setheading(10)
        begin_fill()
        circle(5)
        color(160, 82, 45)
        end_fill()
    
    
    def head(x, y):
        """画头"""
        color((255, 155, 192), "pink")
        penup()
        goto(x,y)
        setheading(0)
        pendown()
        begin_fill()
        setheading(180)
        circle(300, -30)
        circle(100, -60)
        circle(80, -100)
        circle(150, -20)
        circle(60, -95)
        setheading(161)
        circle(-300, 15)
        penup()
        goto(-100, 100)
        pendown()
        setheading(-30)
        a = 0.4
        for i in range(60):
            if 0<= i < 30 or 60 <= i < 90:
                a = a + 0.08
                lt(3) #向左转3度
                fd(a) #向前走a的步长
            else:
                a = a - 0.08
                lt(3)
                fd(a)
        end_fill()
    
    
    def ears(x,y):
        """画耳朵"""
        color((255, 155, 192), "pink")
        penup()
        goto(x, y)
        pendown()
        begin_fill()
        setheading(100)
        circle(-50, 50)
        circle(-10, 120)
        circle(-50, 54)
        end_fill()
        penup()
        setheading(90)
        forward(-12)
        setheading(0)
        forward(30)
        pendown()
        begin_fill()
        setheading(100)
        circle(-50, 50)
        circle(-10, 120)
        circle(-50, 56)
        end_fill()
    
    
    def eyes(x,y):
        """画眼睛"""
        color((255, 155, 192), "white")
        penup()
        setheading(90)
        forward(-20)
        setheading(0)
        forward(-95)
        pendown()
        begin_fill()
        circle(15)
        end_fill()
        color("black")
        penup()
        setheading(90)
        forward(12)
        setheading(0)
        forward(-3)
        pendown()
        begin_fill()
        circle(3)
        end_fill()
        color((255, 155, 192), "white")
        penup()
        seth(90)
        forward(-25)
        seth(0)
        forward(40)
        pendown()
        begin_fill()
        circle(15)
        end_fill()
        color("black")
        penup()
        setheading(90)
        forward(12)
        setheading(0)
        forward(-3)
        pendown()
        begin_fill()
        circle(3)
        end_fill()
    
    
    def cheek(x,y):
        """画脸颊"""
        color((255, 155, 192))
        penup()
        goto(x,y)
        pendown()
        setheading(0)
        begin_fill()
        circle(30)
        end_fill()
    
    
    def mouth(x,y):
        """画嘴巴"""
        color(239, 69, 19)
        penup()
        goto(x, y)
        pendown()
        setheading(-80)
        circle(30, 40)
        circle(40, 80)
    
    
    def setting():
        """设置参数"""
        pensize(4)
        # 隐藏海龟
        hideturtle()
        colormode(255)
        color((255, 155, 192), "pink")
        setup(840, 500)
        speed(10)
    
    
    def main():
        """主函数"""
        setting() 
        nose(-100, 100)
        head(-69, 167)
        ears(0, 160)
        eyes(0, 140)
        cheek(80, 10)
        mouth(-20, 30)
        done()
    
    
    if __name__ == '__main__':
        main()

  •  

Published 46 original articles · won praise 18 · views 30000 +

Guess you like

Origin blog.csdn.net/IGGIRing/article/details/105067711