Python簡單幾步畫個鉆石戒指
一、效果演示
二、制作步驟/過程
(一)繪制戒指
使用tkinter的canvas畫布繪制8個點,然后把這8個點使用canvas.create_line()劃線函數(shù)用直線連接起來形成鉆石形狀。為了增強效果讓鉆石旋轉(zhuǎn)起來,使用while循環(huán),每隔一段時間重新繪制鉆石,但繪制的起始角度偏轉(zhuǎn)11.25度,這樣運行程序鉆石看上去就旋轉(zhuǎn)起來了。
繪制好鉆石后,再使用canvas.create_oval()繪制兩個橢圓作為戒指環(huán)就可以了。
(二)繪制雪花
只有戒指單調(diào)了一點,來給畫布添加點雪花。這里使用random.randint()函數(shù)每隔一段時間隨機繪制50個10px大小的白色正方形,并繪制在畫布上,這里看起來就好多了。這里繪制正方形使用到了canvas.create_rectangle()函數(shù)。
三、完整源代碼文件
import time,random,math from tkinter import Tk, Canvas # 打開窗口 def open_window(): _root = Tk() _root.title("七夕,用Python給你送個鉆石戒指") _root.config(bg='black') # 設(shè)置畫板 _canvas = Canvas(_root, width=640, height=380, bg='black') _canvas.pack() # 待窗口創(chuàng)建后,2秒后執(zhí)行動畫 _root.after(2000, paint_canvas(_root, _canvas)) _root.mainloop() # 啟動動畫函數(shù) def paint_canvas(_tk, _canvas): # 設(shè)置鉆石開始角度 _start_angle = 0 # 設(shè)置存放鉆石八個點x,y坐標(biāo)的列表 _list_x, _list_y = [], [] # 設(shè)置鉆石八個點之間的角度_angel,鉆石中心點x,y坐標(biāo)_x_center,_y_center,鉆石半徑_r _angle, _x_center, _y_center, _r = 30, 320, 120, 50 while True: # 清空畫板 _canvas.delete("all") # 畫戒指 paint_ring(_canvas, _start_angle, _angle, _x_center, _y_center, _r, _list_x, _list_y) _list_x.clear() _list_y.clear() # 從新計算鉆石開始角度 _start_angle = (_start_angle + 11.25) % 360 # 畫星星 paint_star(_canvas) # 動畫刷新時間間隔 time.sleep(0.05) _canvas.update() _tk.update() # 畫戒指函數(shù) def paint_ring(_canvas, _start_angle, _angle, _x_center, _y_center, _r, _list_x, _list_y): _canvas.create_oval(180, 110, 460, 280, outline='white') _canvas.create_oval(190, 130, 450, 275, outline='white') for i in range(12): _list_x.append(_x_center + _r * math.cos((_start_angle + (_angle * i)) * math.pi / 180)) _list_y.append(_y_center + _r * math.sin((_start_angle + (_angle * i)) * math.pi / 180)) for i in range(12): for j in range(12): _canvas.create_line(_list_x[i], _list_y[i], _list_x[j], _list_y[j], fill='white') # 畫雪花函數(shù) def paint_star(_canvas): # 隨機生成不超過畫布長、寬的50個正方形點 for i in range(50): x = random.randint(0, 630) y = random.randint(0, 370) _canvas.create_rectangle(x, y, x + 5, y + 5, fill='white') if __name__ == '__main__': # 打開程序窗口 open_window()
到此這篇關(guān)于Python簡單幾步畫個鉆石戒指的文章就介紹到這了,更多相關(guān)Python鉆石戒指內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python實現(xiàn)將元祖轉(zhuǎn)換成數(shù)組的方法
這篇文章主要介紹了python實現(xiàn)將元祖轉(zhuǎn)換成數(shù)組的方法,涉及Python中l(wèi)ist方法的使用技巧,需要的朋友可以參考下2015-05-05Python解析excel文件存入sqlite數(shù)據(jù)庫的方法
最近工作中遇到一個需求,需要使用Python解析excel文件并存入sqlite,本文就實現(xiàn)的過程做個總結(jié)分享給大家,文中包括數(shù)據(jù)庫設(shè)計、建立數(shù)據(jù)庫、Python解析excel文件、Python讀取文件名并解析和將解析的數(shù)據(jù)存儲入庫,有需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧。2016-11-11Python使用struct處理二進制(pack和unpack用法)
這篇文章主要介紹了Python使用struct處理二進制(pack和unpack用法),幫助大家更好的理解和使用python,感興趣的朋友可以了解下2020-11-11Python編寫繪圖系統(tǒng)之從文本文件導(dǎo)入數(shù)據(jù)并繪圖
這篇文章主要為大家詳細介紹了Python如何編寫一個繪圖系統(tǒng),可以實現(xiàn)從文本文件導(dǎo)入數(shù)據(jù)并繪圖,文中的示例代碼講解詳細,感興趣的可以了解一下2023-08-08