溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python實現(xiàn)簡易數(shù)碼時鐘的案例分析

發(fā)布時間:2021-03-23 09:31:34 來源:億速云 閱讀:181 作者:小新 欄目:開發(fā)技術

這篇文章將為大家詳細講解有關python實現(xiàn)簡易數(shù)碼時鐘的案例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

先插張圖,計算機技術的演進過程,總結的還是挺到位的。

python實現(xiàn)簡易數(shù)碼時鐘的案例分析

安裝好Python環(huán)境,引入需要用到的庫:

import threading
import turtle
import time

引入time庫后使用localtime()方法可以獲取當前服務器時間,然后使用turtle庫繪制7段數(shù)碼管時鐘。

now = time.localtime() # 返回服務器時間
 
print(now)
print(time.strftime("%Y-%m-%d %H:%M:%S", now))
 
# 轉成字符串
# %y 兩位數(shù)的年份表示(00-99)
# %Y 四位數(shù)的年份表示(000-9999)
# %m 月份(01-12)
# %d 月內中的一天(0-31)
# %H 24小時制小時數(shù)(0-23)
# %I 12小時制小時數(shù)(01-12)
# %M 分鐘數(shù)(00=59)
# %S 秒(00-59)
# %a 本地簡化星期名稱
# %A 本地完整星期名稱
# %b 本地簡化的月份名稱
# %B 本地完整的月份名稱
# %c 本地相應的日期表示和時間表示
# %j 年內的一天(001-366)
# %p 本地A.M.或P.M.的等價符
# %U 一年中的星期數(shù)(00-53)星期天為星期的開始
# %w 星期(0-6),星期天為星期的開始
# %W 一年中的星期數(shù)(00-53)星期一為星期的開始
# %x 本地相應的日期表示
# %X 本地相應的時間表示
# %Z 當前時區(qū)的名稱
# %% %號本身

python實現(xiàn)簡易數(shù)碼時鐘的案例分析

繪制數(shù)碼管函數(shù):

# 繪制單根數(shù)碼管
def drawLine(draw):
 turtle.pensize(3)
 turtle.pu
 turtle.fd(3)
 if draw:
 turtle.pd()
 else:
 turtle.pu()
 
 turtle.fd(24)
 turtle.pu()
 turtle.fd(3)
 turtle.right(90)
 
 
# 根據(jù)數(shù)字繪制數(shù)碼管
def drawNum(num, color):
 turtle.colormode(255)
 turtle.color(eval(color))
 # 第一條線
 if num in [2, 3, 4, 5, 6, 8, 9]:
 drawLine(True)
 else:
 drawLine(False)
 
 if num in [0, 1, 3, 4, 5, 6, 7, 8, 9]:
 drawLine(True)
 else:
 drawLine(False)
 
 if num in [0, 2, 3, 5, 6, 8, 9]:
 drawLine(True)
 else:
 drawLine(False)
 
 if num in [0, 2, 6, 8]:
 drawLine(True)
 else:
 drawLine(False)
 
 turtle.left(90)
 
 if num in [0, 4, 5, 6, 8, 9]:
 drawLine(True)
 else:
 drawLine(False)
 
 if num in [0, 2, 3, 5, 6, 7, 8, 9]:
 drawLine(True)
 else:
 drawLine(False)
 
 if num in [0, 1, 2, 3, 4, 7, 8, 9]:
 drawLine(True)
 else:
 drawLine(False)
 
 turtle.pu()
 turtle.left(180)
 turtle.fd(30) # 繪制后面數(shù)字間隔位置
 turtle.update()

一個7段數(shù)碼管全部繪制(顯示數(shù)字8)順序如下,根據(jù)顯示的數(shù)字來決定哪些需要繪制,哪些只是抬起畫筆移動不進行繪制,所以繪制單段數(shù)碼管的函數(shù)內設置了一個參數(shù)draw。

python實現(xiàn)簡易數(shù)碼時鐘的案例分析

定義一個Tick函數(shù),利用threading庫實現(xiàn)定時刷新:

def Tick():
 now = time.localtime()
 now_time.n_sec = now.tm_sec
 turtle.reset()
 turtle.hideturtle()
 turtle.pu()
 turtle.fd(-300)
 
 darwDate(str(now.tm_year), '(255, 69, 0)')
 turtle.fd(10)
 turtle.right(90)
 turtle.fd(30)
 turtle.write('年', align="center", font=("Courier", 30, "bold"))
 turtle.left(180)
 turtle.fd(30)
 turtle.right(90)
 turtle.fd(30)
 
 darwDate(str(now.tm_mon), '(0,139,0)')
 turtle.fd(10)
 turtle.right(90)
 turtle.fd(30)
 turtle.write('月', align="center", font=("Courier", 30, "bold"))
 turtle.left(180)
 turtle.fd(30)
 turtle.right(90)
 turtle.fd(30)
 
 darwDate(str(now.tm_mday), '(0,0,139)')
 turtle.fd(10)
 turtle.right(90)
 turtle.fd(30)
 turtle.write('日', align="center", font=("Courier", 30, "bold"))
 turtle.left(180)
 turtle.fd(-90)
 turtle.right(90)
 turtle.fd(-510)
 
 darwDate(str(now.tm_hour))
 turtle.fd(10)
 turtle.right(90)
 turtle.fd(30)
 turtle.write('時', align="center", font=("Courier", 30, "bold"))
 turtle.left(180)
 turtle.fd(30)
 turtle.right(90)
 turtle.fd(30)
 
 darwDate(str(now.tm_min))
 turtle.fd(10)
 turtle.right(90)
 turtle.fd(30)
 turtle.write('分', align="center", font=("Courier", 30, "bold"))
 turtle.left(180)
 turtle.fd(30)
 turtle.right(90)
 turtle.fd(30)
 
 darwDate(str(now.tm_sec))
 turtle.fd(10)
 turtle.right(90)
 turtle.fd(30)
 turtle.write('秒', align="center", font=("Courier", 30, "bold"))
 turtle.left(180)
 turtle.fd(30)
 turtle.right(90)
 turtle.fd(30)
 
 timer = threading.Timer(0.1, Tick) # 利用多線程庫定時刷新
 timer.start()

最后定義一個入口函數(shù):

def mian():
 turtle.hideturtle() # 隱藏畫筆
 turtle.speed(0) # 最快
 turtle.tracer(0)
 turtle.pu()
 turtle.fd(-300)
 Tick()
 turtle.done()
# Python turtle模塊的海龜作圖,由于需要展示海龜運動的過程,缺省狀態(tài)下,對作圖進行了延遲處理,
# 致使復雜圖形的繪制速度過慢,可以用如下方法取消延遲,加速繪圖:
# 在繪圖之前調用tracer
# turtle.tracer(0)
# 在繪圖結束時調用update
# turtle.update()
 
mian()

最終效果:

python實現(xiàn)簡易數(shù)碼時鐘的案例分析

代碼寫好后,可以打包成一個可執(zhí)行文件,這里需要用到第三方庫PyInstaller;安裝第三方庫Python封裝了包管理工具pip(確保安裝時勾選了pip和Add python.exe to Path)。這里我用在線安裝的方式,在cmd窗口直接運行:pip install 包名,如 pip install pyInstaller,注意:這種方式安裝時會自動下載第三方庫,安裝完成后并不會刪除,如需刪除請到它的默認下載路徑下手動刪除。(win7的默認路徑://AppData可能是隱藏文件夾 c:\用戶\(你的用戶名)\AppData\Local\pip\cache\ linux的默認路徑: ~/.cache/pip)

耐心等待下載并安裝后,就可以使用PyInstaller了,在需要打包的文件目錄下運行pyinstaller -F指令:

python實現(xiàn)簡易數(shù)碼時鐘的案例分析

打包后生成獨立執(zhí)行文件time.exe:

python實現(xiàn)簡易數(shù)碼時鐘的案例分析

打包時還可以通過–icon指令設置指定的圖標,還有更多指令等以后用到的時候再研究。用了一段時間的Python,因為語法簡潔所以代碼的縮進很重要,這也算是一個小坑吧,不過熟能生巧,還需多多練習。

關于“python實現(xiàn)簡易數(shù)碼時鐘的案例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI