python制作羅盤時鐘效果
更新時間:2024年04月16日 10:01:53 作者:朝陽1
這篇文章主要介紹了python制作羅盤時鐘效果,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
背景圖
import sys import math import pygame from datetime import datetime from pygame import display, image, font, transform # 創(chuàng)建羅盤時鐘的窗口 def createWindow(): pygame.init() screen = display.set_mode((800, 700), pygame.RESIZABLE) display.set_caption("炫酷星空版羅盤時鐘") return screen # 年月日轉(zhuǎn)換中文字符 def timeConvertText(year, month, day): # 制作轉(zhuǎn)換字符集 timeSet = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二", "十三", "十四", "十五", "十六", "十七", "十八", "十九", "二十", "二十一", "二十二", "二十三", "二十四", "二十五", "二十六", "二十七", "二十八", "二十九", "三十"] yearText = "" timeText = "" # 進行字符的拼接 while year > 0: num = int(year % 10) yearText = yearText + timeSet[num] year = year // 10 for i in range(yearText.__len__()): timeText += yearText[yearText.__len__() - i - 1] timeText += "年" timeText += timeSet[month] timeText += "月" timeText += timeSet[day] timeText += "日" return timeText # 制作羅盤時鐘的表盤 def createClockDial(screen): # 設(shè)置時鐘背景 background = image.load("./black.jpg") screen.blit(background, (0, 0)) # 坐標(biāo)左上 # 導(dǎo)入字體文件 clockFont = font.Font('C:\Windows\Fonts\simhei.ttf', 18) # 設(shè)置時鐘中心 clockCenterX = 380 clockCenterY = 320 # 時分秒數(shù)據(jù)集 hoursSet = ["一 點", "二 點", "三 點", "四 點", "五 點", "六 點", "七 點", "八 點", "九 點", "十 點", "十一點", "十二點", "十三點", "十四點", "十五點", "十六點", "十七點", "十八點", "十九點", "二十點", "二一點", "二二點", "二三點", "二四點"] minutesSet = ["一 分", "二 分", "三 分", "四 分", "五 分", "六 分", "七 分", "八 分", "九 分", "十 分", "十一分", "十二分", "十三分", "十四分", "十五分", "十六分", "十七分", "十八分", "十九分", "二十分", "二一分", "二二分", "二三分", "二四分", "二五分", "二六分", "二七分", "二八分", "二九分", "三十分", "三一分", "三二分", "三三分", "三四分", "三五分", "三六分", "三七分", "三八分", "三九分", "四十分", "四一分", "四二分", "四三分", "四四分", "四五分", "四六分", "四七分", "四八分", "四九分", "五十分", "五一分", "五二分", "五三分", "五四分", "五五分", "五六分", "五七分", "五八分", "五九分", "六十分"] secondsSet = ["一 秒", "二 秒", "三 秒", "四 秒", "五 秒", "六 秒", "七 秒", "八 秒", "九 秒", "十 秒", "十一秒", "十二秒", "十三秒", "十四秒", "十五秒", "十六秒", "十七秒", "十八秒", "十九秒", "二十秒", "二一秒", "二二秒", "二三秒", "二四秒", "二五秒", "二六秒", "二七秒", "二八秒", "二九秒", "三十秒", "三一秒", "三二秒", "三三秒", "三四秒", "三五秒", "三六秒", "三七秒", "三八秒", "三九秒", "四十秒", "四一秒", "四二秒", "四三秒", "四四秒", "四五秒", "四六秒", "四七秒", "四八秒", "四九秒", "五十秒","五一秒", "五二秒", "五三秒", "五四秒", "五五秒", "五六秒", "五七秒", "五八秒", "五九秒", "六十秒"] # 獲取當(dāng)前時間 year = datetime.today().year month = datetime.today().month day = datetime.today().day hour = datetime.today().hour minute = datetime.today().minute second = datetime.today().second # 時間字符轉(zhuǎn)換 yearMonthDayText = timeConvertText(year, month, day) # 設(shè)置樣式顏色 yearMonthDayText = clockFont.render(yearMonthDayText, True, (255, 0, 0)) # 指定位置繪制 screen.blit(yearMonthDayText, (clockCenterX - 60, clockCenterY)) # 繪制小時羅盤 for i in range(hoursSet.__len__()): if i == 0: hourText = clockFont.render(hoursSet[hour], True, (255, 0, 0)) else: hourText = clockFont.render(hoursSet[hour], True, (255, 255, 255)) hourText = transform.rotate(hourText, 0 - (15 * i)) hourTextX = int(math.cos(math.radians(15 * i)) * 120) hourTextY = int(math.sin(math.radians(15 * i)) * 120) screen.blit(hourText, (clockCenterX + hourTextX, clockCenterY + hourTextY)) hour += 1 if hour == 24: hour = 0 # 繪制分鐘羅盤 for j in range(minutesSet.__len__()): if j == 0: minuteText = clockFont.render(minutesSet[minute], True, (255, 0, 0)) else: minuteText = clockFont.render(minutesSet[minute], True, (255, 255, 255)) minuteText = transform.rotate(minuteText, 0 - (6 * j)) minuteTextX = int(math.cos(math.radians(6 * j)) * 200) minuteTextY = int(math.sin(math.radians(6 * j)) * 200) screen.blit(minuteText, (clockCenterX + minuteTextX, clockCenterY + minuteTextY)) minute += 1 if minute == 60: minute = 0 # 繪制秒種羅盤 for k in range(secondsSet.__len__()): if k == 0: secondText = clockFont.render(secondsSet[second], True, (255, 0, 0)) else: secondText = clockFont.render(secondsSet[second], True, (255, 255, 255)) secondText = transform.rotate(secondText, 0 - (6 * k)) secondTextX = int(math.cos(math.radians(6 * k)) * 280) secondTextY = int(math.sin(math.radians(6 * k)) * 280) screen.blit(secondText, (clockCenterX + secondTextX, clockCenterY + secondTextY)) second += 1 if second == 60: second = 0 display.update() if __name__ == "__main__": screen = createWindow() while True: # 設(shè)置監(jiān)聽事件 for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() keys = pygame.key.get_pressed() if keys[pygame.K_ESCAPE]: pygame.quit() sys.exit() screen.fill((0,0,0)) createClockDial(screen)
到此這篇關(guān)于python制作羅盤時鐘效果的文章就介紹到這了,更多相關(guān)python羅盤時鐘內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python?ConfigParser庫輕松讀寫INI文件實例探究
這篇文章主要為大家介紹了Python?ConfigParser庫輕松讀寫INI文件實例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2024-01-01Pandas中DataFrame.replace()函數(shù)的實現(xiàn)
DataFrame.replace()用于替換DataFrame中的指定值,本文主要介紹了Pandas中DataFrame.replace()函數(shù)的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2024-07-07解決python gdal投影坐標(biāo)系轉(zhuǎn)換的問題
今天小編就為大家分享一篇解決python gdal投影坐標(biāo)系轉(zhuǎn)換的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01django+echart數(shù)據(jù)動態(tài)顯示的例子
今天小編就為大家分享一篇django+echart數(shù)據(jù)動態(tài)顯示的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08如何使用?Python?實現(xiàn)?DeepSeek?R1?本地化部署
文章介紹了如何使用Python實現(xiàn)DeepSeekR1本地化部署,包括硬件環(huán)境、Python環(huán)境、安裝依賴包、配置與運行代碼等步驟,幫助讀者輕松部署并運行本地AI助手,感興趣的朋友一起看看吧2025-02-02