龙空技术网

python练习之:使用turtle绘制动态时钟

K佬食古 418

前言:

眼前看官们对“python乌龟画图有循环语句”大致比较看重,咱们都需要学习一些“python乌龟画图有循环语句”的相关文章。那么小编在网上汇集了一些有关“python乌龟画图有循环语句””的相关资讯,希望大家能喜欢,我们一起来了解一下吧!

python练习之turtle画图:

Turtle库是Python语言中一个很流行的绘制图像的函数库,俗称乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。

今天学习用turtle做一个动态的时钟,主要方法如下:

1.forward():

向前移动指定的距离。参数:一个数字(integer or float))。

turtle.forward(25)

2.backward() | back():

向后移动指定的距离。参数:一个数字(integer or float))。

turtle.backward(30)

3..right():

以角度单位向右转动。参数:一个数字(integer or float))。单位默认为度数,可以通过degrees()和radians()进行设置。

turtle.right(45)

4.left():

以角度单位向左转动。参数:一个数字(integer or float))。单位默认为度数,可以通过degrees()和radians()进行设置。

turtle.left(45)

5.goto() | steps() | setposition():

移动到绝对位置,如果笔落下,画线,不改变方向。参数:x-一个数字或一对数字。y-一个数字或None。

turtle.setpos(60,30)

6.setx():

设置第一个坐标的值即X方向。参数:一个数字(integer or float))。

turtle.setx(10) #(10,0)

7.sety():

设置第二个坐标的值即Y方向。参数:一个数字(integer or float))。

turtle.sety(10) #(0,10)

8.setheading() | seth():

将方向设置为to_angle.就是东西南北方向。具体如下:

标准模式:0 - 东 90 - 北 180 - 西 270 - 南 标志模式 0- 北 90- 东 180- 南 270 - 西

turtle.setheading(90)

9.home() :

移动到原点 - 坐标(0,0):并将其标题设置为其起始方向(取决于模式)。

turtle.home() # (0.00,0.00)默认home就在屏幕中心。

10.circle():

绘制一个给定半径的圆。参数:radius-一个数字(半径,如果值为正则逆时针,负数为顺时针),extent-一个数字()steps- 执行的步数。

turtle.circle(120,180,5)

11.dot() :

用颜色画出一个直径大小的圆点。参数:size-一个大于1的整数,可None。默认用的是pensize+4和2*pensize的最大值,color-颜色值

turtle.dot(20, "blue")

12.undo():

撤销最后的动作。

13.speed():

将速度设置为0..10范围内整数。如果没有参数,则返回当前速度。如果大于10或者小于0.5,则速度设置为0 。

“最快”:0 :直接成图,没有动画效果

“快”:10:大概一秒

“正常”:6:

“慢”:3

“最慢”:1

14:position() | pos():

返回当前的位置。

turtle.pos() # (0.00,0.00)

15.pendown() | pd() | down():

放下笔,移动的时候绘图。

16.penup() | pu() | up():

将提起笔,移动时无图。

17.pensize():

设置线条的粗细。参数:width-一个正数

18.pencolor():

设置笔的颜色。

19.fillcolor():

笔的填充色。

20.color():

同时设置pencolor和fillcolor

21.filling():

返回fillstate状态,如果填充则返回True,反之False。

22.begin_fill():

在绘制要填充的形状前调用。当然在调用完还需要end_fill()。

23.reset():

重置,将屏幕中的图纸删除,重新居中并将所有变量设置为默认值。

24.clear():

删除图纸。对属性不做操作。

25.write():

写文本。参数:arg-要写入的对象。move-是否移动。align-对齐方式:left,right,center。font-字体。fontname,fontsize,fonttype。

26.hideturtle() | ht() :

删隐藏乌龟的形状,在做复杂绘图的时候隐藏的时候有利于提高绘图速度。

27.showturtle() | st():

显示乌龟的形状。

28.shape():

设置乌龟的图形形状,取值:“arrow”, “turtle”, “circle”, “square”, “triangle”, “classic”

29.isvisible():

乌龟是否可见。如果可见返回True,反之则False。

30.resizemode():

参数:rmode取值:"auto","user","noresize".

31.shapesize() | turtlesize() :

返回笔的属性。

32.shearfactor():

设置或者返回但钱的剪切因子。

33.get_shapepoly():

返回当前形状的坐标。

34.onclick():

鼠标点击事件。参数:fun-一个带有两个参数的函数,这些参数将与画布上单击点的坐标一个调用。num-鼠标按钮的数量,默认为1(左键)。add- True的时候将添加新的绑定。否则替换以前的绑定。

35.onrelease():

鼠标释放事件。参数同点击事件。

36.ondrag():

鼠标移动事件。参数同点击事件。

37.begin_poly():

开始记录多边形的顶点。

38.end_poly():

停止记录多边形的顶点。

39.get_poly():

返回最后记录的多边形。

40.getturtle() | getpen() :

获取trutle对象本身。

41.bgcolor():

设置或者返回当前的TurtleScreen的背景颜色。

42.delay():

设置或返回以毫秒为单位的绘制延迟,延迟越大,绘图越慢。

43.ontimer():

定时器。

44.mainloop() | done() :

开始循环 。

45.textinput() | numinput():

弹出一个输入字符串和数字的窗口。

46.mode():

三种方式:“standard”, “logo” or “world”

下面是做出的效果图以及python代码,初始化,绘制表盘,动态显示指针,大家慢慢体会。

import turtlefrom datetime import *def skip(step):    turtle.penup()    turtle.forward(step)    turtle.pendown()def mkhand(name,length):    turtle.reset()    skip(-length*0.1)    turtle.begin_poly()    turtle.forward(length*1.1)    turtle.end_poly()    handform=turtle.get_poly()    turtle.register_shape(name,handform)def init():    global sechand,minhand,hourhand,out    turtle.mode('logo')    mkhand("sechand",135)    mkhand("minhand",125)    mkhand('hourhand',90)    sechand=turtle.Turtle()    sechand.shape('sechand')    minhand=turtle.Turtle()    minhand.shape('minhand')    hourhand=turtle.Turtle()    hourhand.shape('hourhand')    for hand in sechand,minhand,hourhand:        hand.shapesize(1,1,3)        hand.speed(0)    out=turtle.Turtle()    out.hideturtle()    out.penup()def setupclock(r):    turtle.reset()    turtle.pensize(7)    turtle.pencolor('red')    turtle.fillcolor('green')    for i in range(60):        skip(r)        if i%5==0:            turtle.forward(20)            skip(-r-20)            skip(r+20)            if i==0:                turtle.write(12,align='center',font=("Courier", 14, "bold"))            elif i==30:                skip(25)                turtle.write(i//5,align='center',font=("Courier", 14, "bold"))                skip(-25)            elif i==25 or i==35:                skip(20)                turtle.write(i//5,align='center',font=("Courier", 14, "bold"))                skip(-20)            else:                turtle.write(i//5,align='center',font=("Courier", 14, "bold"))            skip(-r-20)        else:            turtle.dot(5)            skip(-r)        turtle.right(6)def dida():    t=datetime.today()    second=t.second+t.microsecond*0.000001    minute=t.minute+second/60.0    hour=t.hour+minute/60.0    sechand.setheading(6*second)    minhand.setheading(6*minute)    hourhand.setheading(30*hour)    turtle.tracer(False)    out.forward(65)    out.write(week(t),align='center',font=("Courier", 14, "bold"))    out.back(130)    out.write(date(t),align='center',font=("Courier", 14, "bold"))    out.home()    turtle.tracer(True)    turtle.ontimer(dida,100)def week(t):    wk=['星期一','星期二','星期三','星期四','星期五','星期六','星期日']    return wk[t.weekday()]def date(t):    y=t.year    m=t.month    d=t.day    return "%s-%d-%d" %(y,m,d)def main():    turtle.tracer(False)    init()    setupclock(160)    turtle.tracer(True)    dida()    turtle.mainloop()if __name__ == "__main__":    main()

刚开始学python,感觉确实很高效。

标签: #python乌龟画图有循环语句