python 利用turtle库绘制七段数码管的方式,绘制当前事件(时分秒00:00:00)

# coding:utf-8
# 绘制七段数码管,显示当前时间
import time
import turtle as tt

# 绘制间隔
def drawGap():
tt.penup()
tt.fd(3)

# 绘制单段数码管
def drawLine(draw):
drawGap()

if(draw):
tt.pendown()
else:
tt.penup()

tt.fd(25)
drawGap()
tt.right(90)

# 绘制当前时间
def drawDate(date):
tt.pencolor("black")
for i in date:
if i == '=':
tt.write(":", font=("黑体", 25, "normal"))
tt.pencolor("black")
tt.fd(25)
elif i == '#':
tt.write(":", font=("黑体", 25, "normal"))
tt.pencolor("black")
tt.fd(25)
elif i == '$':
tt.write("", font=("黑体", 25, "normal"))

else:
drawDigit(eval(i))

# 绘制数码管
def drawDigit(cur_time):
if cur_time in [2, 3, 4, 5, 6, 8, 9]:
drawLine(True)
else:
drawLine(False)

if cur_time in [0, 1, 3, 4, 5, 6, 7, 8, 9]:
drawLine(True)
else:
drawLine(False)

if cur_time in [0, 2, 3, 5, 6, 8, 9]:
drawLine(True)
else:
drawLine(False)

if cur_time in [0, 2, 6, 8]:
drawLine(True)
else:
drawLine(False)

tt.left(90)

if cur_time in [0, 4, 5, 6, 8, 9]:
drawLine(True)
else:
drawLine(False)

if cur_time in [0, 2, 3, 5, 6, 7, 8, 9]:
drawLine(True)
else:
drawLine(False)

if cur_time in [0, 1, 2, 3, 4, 7, 8, 9]:
drawLine(True)
else:
drawLine(False)

tt.left(180)
tt.penup()
tt.fd(20)

# 主函数
def main():
tt.setup(800, 400, 200, 200)
tt.penup()
tt.fd(-330)
tt.pensize(2)
drawDate(time.strftime('%H=%M#%S$', time.localtime()))
tt.hideturtle()
tt.done()

if __name__ == "__main__":
main()

如有不懂,加群讨论

转载于:https://www.cnblogs.com/chaihy/p/10118844.html

Python中,我们可以使用`turtle`结合一些基本的图形操作来模拟七段数码管的显示。虽然`turtle`本身并不是最适合做复杂图形设计的,但我们可以通过简单的形状组合来表示数字的各个段。以下是一个简化的示例,展示如何绘制出0-9和a-f的基本图形,然后通过循环来显示每个字符: ```python import turtle # 定义七段数码管的每个数字和字母的形状 def draw_digit(char): if char == '0': turtle.penup() turtle.goto(-50, -50) turtle.pendown() turtle.circle(30, 180) turtle.left(90) turtle.forward(60) turtle.right(90) turtle.forward(60) turtle.right(180) turtle.forward(30) turtle.right(90) turtle.forward(60) elif char == '1': turtle.left(90) turtle.forward(60) elif char == '2': turtle.penup() turtle.goto(-30, -50) turtle.pendown() turtle.circle(30, 180) turtle.left(90) turtle.forward(60) turtle.right(90) turtle.forward(60) turtle.right(180) turtle.forward(30) turtle.left(90) turtle.forward(30) # ... 对其他数字和小写字母进行类似绘制(这里只列出部分) # 创建turtle对象并设置初始位置和方向 turtle.speed(0) # 设置快速移动 turtle.hideturtle() # 隐藏turtle turtle.penup() turtle.goto(-100, 0) turtle.pendown() # 显示123456789abcdef for char in "123456789abcdef": draw_digit(char) turtle.left(12 * 11) # 每个字符间旋转一个小角度,形成连续显示效果 turtle.penup() turtle.forward(30) turtle.pendown() # 结束程序,等待用户关闭窗口 turtle.done()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值