[python]Turtle 模块 初探
在学 python GUI 编程时,发现了一个有趣的库:Turtle 库。
Turtle 是 Python 语言中一个很流行的绘制图像的函数库。
from turtle import *
from datetime import *
# 移动到指定位置
def skip(step):
penup()
forward(step)
pendown()
# 画指针
def drawpointer(name, length):
reset()
skip(-length * 0.1)
begin_poly()
forward(length * 1.1)
end_poly()
handForm = get_poly()
register_shape(name, handForm)
# 初始化
def init():
global hrpointer, minpointer, secpointer, weektext
# 设置turtle Logo模式,朝北
mode("logo")
drawpointer("hrpointer", 90)
drawpointer("minpointer", 130)
drawpointer("secpointer", 140)
hrpointer = Turtle()
hrpointer.shape("hrpointer")
minpointer = Turtle()
minpointer.shape("minpointer")
secpointer = Turtle()
secpointer.shape("secpointer")
secpointer.pencolor("red")
for pointer in hrpointer, minpointer, secpointer:
pointer.shapesize(3, 1, 1)
pointer.speed(0)
# 文字输出
weektext = Turtle()
weektext.hideturtle()
weektext.penup()
# 设置表盘形状
def setupClock(radius):
reset()
# clockPanel = Turtle()
pensize(7)
pencolor("blue")
for i in range(60):
skip(radius)
if i % 5 == 0:
forward(20)
skip(-radius - 20)
else:
dot(5)
skip(-radius)
right(6)
# 星期文本
def Week(t):
week = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"]
return week[t.weekday()]
# 日期文本
def Date(t):
y = t.year
m = t.month
d = t.day
return "%s %d %d" % (y, m, d)
# 绘制表针动态显示
def tick():
t = datetime.today()
second = t.second + t.microsecond * 0.0000001
minute = t.minute + second / 60.0
hour = t.hour + minute / 60.0
secpointer.setheading(6 * second)
minpointer.setheading(6 * minute)
hrpointer.setheading(30 * hour)
tracer(False)
weektext.forward(65)
weektext.write(Week(t), align="center", font=("Courier", 14, "bold"))
weektext.back(130)
weektext.write(Date(t), align="center", font=("Courier", 14, "bold"))
weektext.home()
tracer(True)
# 间隔100ms调用一次
ontimer(tick, 100)
def main():
tracer(False)
init()
setupClock(160)
tracer(True)
tick()
mainloop()
if __name__ == '__main__':
main()
商城里有一个《欢迎使用 RPA》的机器人,觉得很有趣。所以也想自己做一个有趣的机器人,比如上文的时钟。上文的 python 代码只是个简单例子,可以再优化。
比如:
1. 背景设置,可以定时变化
2. 边框透明
3. 定时提醒(类似于护眼功能)还有什么可以做的么······
👍
这个必须点赞👍
👍🏻