1
Python编程从入门到实践
1.14.3.3 10.3.3 绘制数码管显示当前日期
10.3.3 绘制数码管显示当前日期

七段数码管(seven-segment indicator)由7段数码管拼接而成,每段有亮或不亮两种情况,改进型的七段数码管还包括一个小数点位置,采用turtle库并使用函数封装绘制七段数码管,显示当前系统日期和时间。

七段数码管的编号如图10-23所示。基本逻辑为画笔从1走到7,每一步画笔落下代表画或者是画笔抬起代表不画,最终形成1~9的数字排列。绘制起点在数码管中部左侧,无论每段数码管是否被绘制出来,turtle画笔都按顺序“画完”7个数码管。每个0~9的数字都有相同的七段数码管样式,因此,可以通过设计函数复用数字的绘制过程。

图10-23 七段数码管的绘制顺序

【例10.21】绘制数码管显示当前日期。

解析:通过turtle库函数绘制七段数码管形式的日期信息。该问题描述如下。①输入:当前日期的数字形式;②处理:根据每个数字绘制七段数码管表示;③输出:绘制当前日期的七段数码管表示。

根据输入数字判断是否要绘制七段数码管最中间的横线,当需要绘制时,调用绘制函数drawLine(),参数赋值True;当不需要绘制时,参数赋值False。相据0~9数字结构,0、1、2这些数字需要绘制,其他不需要绘制。为了使代码模块化更好,实例代码中定义了draw-Date()函数和main()函数。其中,drawDate()函数将更长数字分解为单个数字,进一步调用drawDigit()分别绘制每个数字。main()函数将启动窗体大小、设置画笔宽度、设置系统时间等功能封装在一起,但main()函数并不体现单一功能,这种封装仅从提高代码可读性角度考虑。

实例代码给出了图10-24的绘制风格,使用函数能大量复用代码,避免相同功能重复编写。

图10-24 实例代码显示当前日期的运行效果

扫码查看彩图