Python学习笔记-Turtle库简单实例之日期时间显示

来源:互联网 发布:淘宝假冒品牌 自动退款 编辑:程序博客网 时间:2024/05/19 03:23

        Python语言包含有不少图形工具包,强如Tkinter,底层如python的内置图形库Graphics和Turtle。Turtle库就是通过控制屏幕上小乌龟的移动轨迹绘制图形,本文的一系列操作主要和Turtle库有关。关于Turtle库的详细介绍:点击打开链接,本文仅对用到的几个函数作简要介绍:

引入方式:

import turtlefrom turtle import*
控制画笔绘制状态的函数:

pendown() pd() down() 放下画笔penup() pu() up() 提起画笔
控制画笔颜色和字体函数:
color() 参数为颜色,如:‘red’,'black'showturtle() st() 显示画笔hideturtle() ht() 隐藏画笔
控制画笔运动的函数:

forward(distance) fd(distance) 使turtle前进distance个像素backward(distance) bk(distance) back(distance) 使turtle后退distance个像素right(angle) rt(angle) 运动方向向右转angle°left(angle) lt(angle) 运动方向向左转angle°setheading(angle) seth(angle) 重置方位角为angle(水平向右方向为0°方位角,水平方向顺时针转angle°为方位角angle°)position() pos() 返回画笔的位置(x,y)元组类型goto(x,y) 将画笔移动至(x,y)处
Screen类函数:

setup(width,height,startx,starty) 建立一个宽为width像素,高为height像素的屏幕,起始点为(startx,starty)

使用例子:

1.首先引入turtle库和之后会用到的datetime库,定义了左转右转90°和前进后退20个像素点,初始化方位角的简约版函数:

from turtle import*import datetimedef L():    left(90)def R():    right(90)    def F():    forward(20)def B():    backward(20)def S():    seth(0)
2.定义绘制阿拉伯数字0-9的函数,所有的笔画均为直来直去(自行脑补),每个数字由之前定义的操作组成:
def draw0():    S()    F()    L()    F()    F()    L()    F()    L()    F()    F()def draw1(i,n):    #使得1居中    if i<n:        up()        goto(i*50+20,0)        pd()    if i>=n:        up()        goto((i-n)*50+20,-100)        pd()     seth(90)    F()    F()  def draw2():    S()    F()    B()    seth(90)    F()    R()    F()    L()    F()    L()    F()def draw3():    S()    F()    L()    F()    L()    F()    B()    seth(90)    F()    L()    F()def draw4(i,n):    #使得4靠右对齐    if i<n:        up()        goto(i*50+20,0)        pd()    if i>=n:        up()        goto((i-n)*50+20,-100)        pd()     seth(90)    F()    F()    B()    seth(180)    F()    R()    F()def draw5():    S()    F()    L()    F()    L()    F()    R()    F()    R()    F()def draw6():    draw5()    B()    seth(-90)    F()    F()def draw7(i,n):    #使得4靠右对齐    if i<n:        up()        goto(i*50+20,0)        pd()    if i>=n:        up()        goto((i-n)*50+20,-100)        pd()    seth(90)    F()    F()    L()    F()def draw8():    draw0()    B()    S()    F()def draw9():    S()    F()    L()    F()    F()    L()    F()    L()    F()    L()    F()
3.定义主函数,使用datetime库中datetime类中的today()函数获取当前日期和时间,格式为"yyyy-mm-dd hh:mm:ss.xxxxxx"既包括年月日时分秒甚至毫秒。本文所用的信息仅为年月日时分秒,则通过字符串和列表等一系列操作(remove)去掉了‘-’和‘:’。在绘图时以年月日和时分秒中间的空格作为分节符,年月日放在第一行,时分秒安排在第二行,以红颜色的轨迹在宽1000高600的屏幕上通过循环来显示时间和日期。完成绘制后隐藏画笔。
def main():    time=str(datetime.datetime.today()) #用时间函数生成时间    number=list(time)    #把'-'和':'去掉    for i in range(2):        number.remove('-')        number.remove(':')    number=number[:15]    setup(1000,600,0,0)    pythonsize=5    pensize(pythonsize)    pencolor('red')    n=number.index(' ')    speed(6)    #画日期    for i in range(n):        a=number[i]        if a=='0':draw0()        if a=='1':draw1(i,n)                if a=='2':draw2()        if a=='3':draw3()        if a=='4':draw4(i,n)        if a=='5':draw5()        if a=='6':draw6()        if a=='7':draw7(i,n)        if a=='8':draw8()        if a=='9':draw9()        up()        goto((i+1)*50,0)        pd()            #提起笔去第二行    up()    goto(0,-100)    pd()        #画时间    for i in range(n,len(number)):        a=number[i]        if a=='0':draw0()        if a=='1':draw1(i,n)        if a=='2':draw2()        if a=='3':draw3()        if a=='4':draw4(i,n)        if a=='5':draw5()        if a=='6':draw6()        if a=='7':draw7(i,n)        if a=='8':draw8()        if a=='9':draw9()        up()        goto((i-n+1)*50,-100)        pd()    hideturtle()
4.执行主函数:
main()
执行结果如图所示: