Python簡(jiǎn)單幾步畫個(gè)鉆石戒指
一、效果演示

二、制作步驟/過(guò)程
(一)繪制戒指
使用tkinter的canvas畫布繪制8個(gè)點(diǎn),然后把這8個(gè)點(diǎn)使用canvas.create_line()劃線函數(shù)用直線連接起來(lái)形成鉆石形狀。為了增強(qiáng)效果讓鉆石旋轉(zhuǎn)起來(lái),使用while循環(huán),每隔一段時(shí)間重新繪制鉆石,但繪制的起始角度偏轉(zhuǎn)11.25度,這樣運(yùn)行程序鉆石看上去就旋轉(zhuǎn)起來(lái)了。
繪制好鉆石后,再使用canvas.create_oval()繪制兩個(gè)橢圓作為戒指環(huán)就可以了。

(二)繪制雪花
只有戒指單調(diào)了一點(diǎn),來(lái)給畫布添加點(diǎn)雪花。這里使用random.randint()函數(shù)每隔一段時(shí)間隨機(jī)繪制50個(gè)10px大小的白色正方形,并繪制在畫布上,這里看起來(lái)就好多了。這里繪制正方形使用到了canvas.create_rectangle()函數(shù)。

三、完整源代碼文件
import time,random,math
from tkinter import Tk, Canvas
# 打開(kāi)窗口
def open_window():
_root = Tk()
_root.title("七夕,用Python給你送個(gè)鉆石戒指")
_root.config(bg='black')
# 設(shè)置畫板
_canvas = Canvas(_root, width=640, height=380, bg='black')
_canvas.pack()
# 待窗口創(chuàng)建后,2秒后執(zhí)行動(dòng)畫
_root.after(2000, paint_canvas(_root, _canvas))
_root.mainloop()
# 啟動(dòng)動(dòng)畫函數(shù)
def paint_canvas(_tk, _canvas):
# 設(shè)置鉆石開(kāi)始角度
_start_angle = 0
# 設(shè)置存放鉆石八個(gè)點(diǎn)x,y坐標(biāo)的列表
_list_x, _list_y = [], []
# 設(shè)置鉆石八個(gè)點(diǎn)之間的角度_angel,鉆石中心點(diǎn)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()
# 從新計(jì)算鉆石開(kāi)始角度
_start_angle = (_start_angle + 11.25) % 360
# 畫星星
paint_star(_canvas)
# 動(dòng)畫刷新時(shí)間間隔
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):
# 隨機(jī)生成不超過(guò)畫布長(zhǎng)、寬的50個(gè)正方形點(diǎn)
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__':
# 打開(kāi)程序窗口
open_window()到此這篇關(guān)于Python簡(jiǎn)單幾步畫個(gè)鉆石戒指的文章就介紹到這了,更多相關(guān)Python鉆石戒指內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
linux之文件查找指定文件中包含關(guān)鍵字的行信息方式
這篇文章主要介紹了linux之文件查找指定文件中包含關(guān)鍵字的行信息方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。2023-06-06
Python3多線程基礎(chǔ)知識(shí)點(diǎn)
在本篇內(nèi)容里小編給大家分享了關(guān)于Python3多線程基礎(chǔ)知識(shí)點(diǎn)內(nèi)容,需要的朋友們跟著學(xué)習(xí)參考下。2019-02-02
Python數(shù)學(xué)形態(tài)學(xué)實(shí)例分析
這篇文章主要介紹了Python數(shù)學(xué)形態(tài)學(xué),結(jié)合實(shí)例形式分析了Python數(shù)學(xué)運(yùn)算與圖形繪制相關(guān)操作技巧,需要的朋友可以參考下2019-09-09
Python中AI圖像識(shí)別實(shí)現(xiàn)身份證識(shí)別
圖像識(shí)別說(shuō)白了就是把一張照片上面的文字進(jìn)行提取,提供工作效率,本文主要介紹了Python 身份證識(shí)別,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08
python中pandas庫(kù)中DataFrame對(duì)行和列的操作使用方法示例
這篇文章主要介紹了python中pandas庫(kù)中DataFrame對(duì)行和列的操作使用方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
十一個(gè)案例帶你吃透Python函數(shù)參數(shù)
這篇文章主要通過(guò)十一個(gè)案例帶大家一起了解一下Python中的函數(shù)參數(shù),文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定幫助,需要的可以參考一下2022-08-08
flask 框架操作MySQL數(shù)據(jù)庫(kù)簡(jiǎn)單示例
這篇文章主要介紹了flask 框架操作MySQL數(shù)據(jù)庫(kù),結(jié)合實(shí)例形式詳細(xì)分析了flask框架操作MySQL數(shù)據(jù)庫(kù)的連接、表格創(chuàng)建、數(shù)據(jù)增刪改查等相關(guān)使用技巧,需要的朋友可以參考下2020-02-02

