Python turtle库使用 及七段数码管绘制

turtle库介绍

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

1、Turtle中的turtle.setup()函数用于启动一个图形窗口,它有四个参数

turtle.setup(width, height, startx, starty),如:turtle.setup(800, 350, 0, 0)

分别是:启动窗口的宽度高度表示窗口启动时,窗口左上角在屏幕中的坐标位置。 

我们所使用的显示屏幕也是一个坐标系,该坐标系以左上角为原点,向左和向下分别是x轴和y轴。蟒蛇程序代码启动一个800像素宽、350像素高的窗,该窗口的左上角是屏幕的左上角。 

(startx,starty)表示画的初始点,(0,0)表示位于电脑屏幕中心

2、Turtle中的turtle.pensize()函数表示小乌龟运动轨迹的宽度。 

3、Turtle中的turtle.pencolor()函数表示小乌龟运动轨迹的颜色。

它包含一个输入参数,这里我们把它设为蓝色:blue,其他颜色单词也可以使用。Turtle采用RGB方式来定义颜色,如果希望获得和图片中颜色一致的小蛇,请输入turtle.pencolor(“#3B9909”) 

4、Turtle中的turtle.seth(angle)函数表示小乌龟启动时运动的方向。它包含一个输入参数,是角度值。

其中,0表示向东,90度向北,180度向西,270度向南;负值表示相反方向。

5、turtle.circle(radius)函数让小乌龟沿着一个圆形爬行

参数radius描述圆形轨迹半径的位置,这个半径在小乌龟运行的左侧,radius远位置处。如果 radius为负值,则半径在小乌龟运行的右侧, 参数angle表示小乌龟沿着圆形爬行的弧度值。 

6、turtle.fd()函数也可以用turtle.forward()表示乌龟向前直线爬行移动表示小乌龟向前直线爬行移动,它有一个参数表示爬行的距离 。

7、详细参数描述

七段数码管绘制

import turtle, time


def drawline(draw):
    drawGap()
    turtle.pendown() if draw else turtle.penup()
    turtle.fd(40)
    drawGap()
    turtle.right(90)

def drawGap():
    turtle.penup()
    turtle.fd(5) 

def drawDigit(digit):
    drawline(True) if digit in [2, 3, 4, 5, 6, 8, 9] else drawline(False)
    drawline(True) if digit in [0, 1, 3, 4, 5, 6, 7, 8, 9] else drawline(False)
    drawline(True) if digit in [0, 2, 3, 5, 6, 8] else drawline(False)
    drawline(True) if digit in [0, 2, 6, 8] else drawline(False)
    turtle.left(90)
    drawline(True) if digit in [0, 4, 5, 6, 8, 9] else drawline(False)
    drawline(True) if digit in [0, 2, 3, 5, 6, 7, 8, 9] else drawline(False)
    drawline(True) if digit in [0, 1, 2, 3, 4, 7, 8, 9] else drawline(False)
    turtle.left(180)
    turtle.penup()
    turtle.fd(20)


def drawDate(date):
    turtle.pencolor('red')
    for i in date:
        if i == '-':
            turtle.write('年', font=('Arial', 20, 'normal'))
            turtle.pencolor('green')
            turtle.fd(40)
        elif i == '=':
            turtle.write('月', font=('Arial', 20, 'normal'))
            turtle.pencolor('blue')
            turtle.fd(40)
        elif i == '+':
            turtle.write('日', font=('Arial', 20, 'normal'))
        else:
            drawDigit(eval(i))


def main():
    turtle.setup(800, 350, 200, 200)
    turtle.penup()
    turtle.pensize(5)
    turtle.speed(10)
    turtle.fd(-300)
    turtle.pendown()
    drawDate(time.strftime('%Y-%m=%d+', time.gmtime()))
    turtle.hideturtle()
    turtle.done()
main()

  • 6
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
文件太大上传失败,已共享到网盘,请到如下地址下载 http://vdisk.weibo.com/s/nfF_Q ===================================================================2013-1-1 自动对输出的EXE动画文件进行加密处理,这是一个重要升级,意味着只有自己 的加密狗才可以打开/编辑自己设计的EXE,而别人只能播放EXE而不能打开EXE, 杜绝了骗图、偷图等盗版行为,并切底阻止他人非法提取自己的TOL、图片及动画效果. ===================================================================2012-09-01 1、AVI动画加入MP3音乐功能 2、增加1024X16编译系统 3、NeonPlay 中的程序编辑中块操作中增加直接删除节拍功能 4、NeonPlay 图元移动中增加图元再制次数选项 5、NeonEdit 增加单线芯片的1024X16控制器的输出修改 6、NeonPlay 中修改属性设置过行列数后,再次显示属性时显示行列数都是1的错误 7、NeonPlay 修改图元分割时默认是图元分割 8、NeonPlay 修改花样编辑自动花样V型花样的V型移动和V型翻转的从下到上,从右到左的错误 9、NeonEdit 修改自动花样下V型花样V型移动和V型翻转中从右到左,从下到下在空节 拍生成第一节拍出错的错误 ===================================================================2012-07-03 增加功能 1、NeonPlay支持AVI动画文件输出,播放更通用,同时最大限度保护了设计者的版权 2、修改NeonPlay中动画大高度遮罩时播放演示错误 3、修改NeonEdit编译中单线芯片中2048点控制器线路定义的错误 4、修正编译系统的加密功能 5、升级DMX512的编译系统 6、输出bin文件功能普通用户受限制 ===================================================================2012-05-13 增加功能 1、Neonplay 网格设计区工具菜单下增加Flash/SWF转网格[TOL]功能 2、NeonEdit节拍编辑菜单下增加Flash/SWF转网格[TOL/COT]功能 ===================================================================2012-04-06 1、升级软件保护机制 2、增加编译系统:2048x16 3、修改 NeonPlay 菜单下打开不起作用的错误 4、修正 NeonEdit 修改调色板后面有空白的错误 5、修正工具栏里的节点编辑不起作用---注意:只能编辑贝兹曲线和折 线,每次只能编辑一个图元:一个贝兹曲线或者一个折线 ===================================================================2012-03-10 1、采集器2012增加了保存256等级的cot文件功能,单次最大采集5万帧. 采集器2012需要加密狗才能运行 2、修正NeonEdit另存cot文件的错误 3、NeonPlay 修改了删除遮罩时撤销和返回的错误 4、Neonplay 修改自由变换删除后,再撤销的错误 5、NeonPlay 修改了png遮罩变反 6、点击版本号或者点击NeonPlay的<<关于>>菜单可显示最近更新历史 ===================================================================2012-02-28 该版本为重要升级,新版本支持256等级的网格文件和色盘文件, 新256等级网格文件采用.COT扩展名保存,原有的128等级网格 文件.TOL继续保持兼容. 1,增加.COT的256等级网格文件 2,色盘增加256等级颜色 3,色盘增加全选和七种颜色的自定义 4,修正自由变换出错、遮罩删除、图片遮罩反 5,修正与杀毒软件的兼容性 ===================================================================2011-12-08 1,增加导入大图片文件功能,在<<插入>>菜单里的最下面 2,增加了 png 图片转成遮罩层 3,平铺后任意变形能否增加弧度调整功能。 如果建筑有弧度需要分解后分跟调整很麻烦!解决方法是 用分割成线段组,不要把它们打断 ===================================================================2011-10-31 增加单线1024X8的编译 ===================================================================2011-10-18 增加DMX512系列控制器的编译 1, 170点X8通道 2, 512点X8通道 3,1024点X8通道 ===================================================================2011-07-22 1,解决输出的EXE被当病毒杀 2,升级单线芯片的编译系统 ===================================================================2011-07-07 1.动画像素提升到:1024*768 2.可以支持输出静态图片功能,客户可以打印静态的效果。 3.解决问题: 输出动画后,画面和制作界面大小不一致,自动裁切下面的,动画图像很靠下。 4.解决问题: 画图界面按空格画图的时候拖动画面的时候是反方向,和ps也是相反的。 5.升级了 PLAY2006 播放器 升级到 PLAY2011
好的,我可以为您提供代码示例,以下是基于 turtle 和 datetime 完成七段数码管绘制的代码: ```python import turtle import datetime # 设置窗口大小 turtle.setup(800, 600) # 设置画笔 turtle.penup() turtle.speed(0) turtle.pensize(5) # 数字对应的七段数码管 digit_segments = { 0: [1, 1, 1, 0, 1, 1, 1], 1: [0, 0, 1, 0, 0, 1, 0], 2: [1, 0, 1, 1, 1, 0, 1], 3: [1, 0, 1, 1, 0, 1, 1], 4: [0, 1, 1, 1, 0, 1, 0], 5: [1, 1, 0, 1, 0, 1, 1], 6: [1, 1, 0, 1, 1, 1, 1], 7: [1, 0, 1, 0, 0, 1, 0], 8: [1, 1, 1, 1, 1, 1, 1], 9: [1, 1, 1, 1, 0, 1, 1] } # 绘制七段数码管 def draw_segment(seg, x, y): turtle.setpos(x, y) turtle.pendown() if seg == 1: turtle.setheading(90) turtle.forward(50) elif seg == 0: turtle.setheading(0) turtle.forward(50) turtle.setheading(90) turtle.forward(50) turtle.setheading(180) turtle.forward(50) turtle.setheading(-90) turtle.forward(50) turtle.setheading(0) turtle.forward(50) turtle.penup() # 绘制数字 def draw_digit(digit, x, y): segments = digit_segments[digit] draw_segment(segments[0], x + 10, y + 60) draw_segment(segments[1], x + 60, y + 10) draw_segment(segments[2], x + 110, y + 10) draw_segment(segments[3], x + 160, y + 60) draw_segment(segments[4], x + 110, y + 110) draw_segment(segments[5], x + 60, y + 110) draw_segment(segments[6], x + 10, y + 60) # 获取当前时间 now = datetime.datetime.now() # 获取小时、分钟、秒钟 hour = now.hour minute = now.minute second = now.second # 绘制数字时分秒 draw_digit(hour // 10, -200, 0) draw_digit(hour % 10, -90, 0) draw_digit(minute // 10, 30, 0) draw_digit(minute % 10, 140, 0) draw_digit(second // 10, 250, 0) draw_digit(second % 10, 360, 0) # 隐藏画笔 turtle.hideturtle() # 等待用户关闭窗口 turtle.done() ``` 这段代码会绘制当前时间的时分秒,如果您想要绘制其他数字,可以修改 `hour`、`minute`、`second` 的值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值