首頁 > 軟體

python 使用turtle實現實時鐘表並生成exe

2022-03-17 19:01:45

原始碼

python引入兩個內建庫turtle和datetime即可製作一個實時鐘表,程式碼如下:

# 用turtle畫時鐘
# 以自定義shape的方式實現
import turtle as t
import datetime as d


def skip(step):  # 擡筆,跳到一個地方
    t.penup()
    t.forward(step)
    t.pendown()


def drawClock(radius):  # 畫表盤
    t.speed(0)
    t.mode("logo")  # 以Logo座標、角度方式
    t.hideturtle()
    t.pensize(7)
    t.home()  # 回到圓點
    for j in range(60):
        skip(radius)
        if (j % 5 == 0):
            t.forward(20)
            skip(-radius - 20)
        else:
            t.dot(5)
            skip(-radius)
        t.right(6)


def makePoint(pointName, len):  # 鐘的指標,時針、分針、秒針
    t.penup()
    t.home()
    t.begin_poly()
    t.back(0.1 * len)
    t.forward(len * 1.1)
    t.end_poly()
    poly = t.get_poly()
    t.register_shape(pointName, poly)  # 註冊為一個shape


def drawPoint():  # 畫指標
    global hourPoint, minPoint, secPoint, fontWriter
    makePoint("hourPoint", 100)
    makePoint("minPoint", 120)
    makePoint("secPoint", 140)
    hourPoint = t.Pen()  # 每個指標是一隻新turtle
    hourPoint.shape("hourPoint")
    hourPoint.shapesize(1, 1, 6)
    minPoint = t.Pen()
    minPoint.shape("minPoint")
    minPoint.shapesize(1, 1, 4)
    secPoint = t.Pen()
    secPoint.shape("secPoint")
    secPoint.pencolor('red')
    fontWriter = t.Pen()
    fontWriter.pencolor('gray')
    fontWriter.hideturtle()


def getWeek(weekday):
    weekName = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日']
    return weekName[weekday]


def getDate(year, month, day):
    return "%s-%s-%s" % (year, month, day)


def getRealtime():
    curr = d.datetime.now()
    curr_year = curr.year
    curr_month = curr.month
    curr_day = curr.day
    curr_hour = curr.hour
    curr_minute = curr.minute
    curr_second = curr.second
    curr_weekday = curr.weekday()
    t.tracer(False)
    secPoint.setheading(360 / 60 * curr_second)
    minPoint.setheading(360 / 60 * curr_minute)
    hourPoint.setheading(360 / 12 * curr_hour + 30 / 60 * curr_minute)
    fontWriter.clear()
    fontWriter.home()
    fontWriter.penup()
    fontWriter.forward(80)
    # 用turtle寫文字
    fontWriter.write(getWeek(curr_weekday), align="center", font=("Courier", 14, "bold"))
    fontWriter.forward(-160)
    fontWriter.write(getDate(curr_year, curr_month, curr_day), align="center", font=("Courier", 14, "bold"))
    t.tracer(True)
    print(curr_second)
    t.ontimer(getRealtime, 1000)  # 每隔1000毫秒呼叫一次realTime()


def main():
    t.tracer(False)
    drawClock(160)
    drawPoint()
    getRealtime()
    t.tracer(True)
    t.mainloop()


if __name__ == '__main__':
    main()

參照模組:turtle,datetime

定義函數:

  • skip():重複指定動作
  • drawClock():畫表盤
  • drawPoint():畫指標
  • getWeek():顯示星期
  • getDate():顯示日期
  • getRealtime():顯示實時時間
  • main():主函數

執行效果如下:

打包exe

也可打包為exe,這樣在沒有編譯環境的情況下也可以執行(發給你的小夥伴展示一下你的技術,豈不美哉) 效果如下(不會打包看pyinstaller打包exe詳細教學) 這裡就不做演示了,直接上效果圖

以上就是利用turtle庫和datetime庫製作實時鐘表

到此這篇關於python 使用turtle實現實時鐘表並生成exe的文章就介紹到這了,更多相關python 實時鐘表內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com