python3.6 tkinter實(shí)現(xiàn)屏保小程序
本文實(shí)例為大家分享了python3.6 tkinter實(shí)現(xiàn)屏保小程序,供大家參考,具體內(nèi)容如下
該小程序是在閑著沒(méi)事的時(shí)候,隨便寫的,就當(dāng)打發(fā)無(wú)聊了。
該程序是用python3.6寫的,調(diào)用了python中的tkinter的庫(kù)(*python2x與python3x的thinter有很多不同的地方,一定要特別注意?。。。?/p>
from random import randint
from tkinter import *
class Randball():
def __init__(self,canvas,scrnwidth,scrnheight):
#初始化畫布
self.canvas = canvas
#初始化球的圓心坐標(biāo)
self.x_pos = randint(50,int(scrnwidth))#X軸的坐標(biāo) randint 隨機(jī)產(chǎn)生一個(gè)范圍內(nèi)的整數(shù)
self.y_pos = randint(50,int(scrnheight))#Y軸的坐標(biāo)
#球的移動(dòng)距離
self.x_move = 10
self.y_move = 10
#整個(gè)屏幕的高和寬
self.scrnwidth =scrnwidth
self.scrnheight =scrnheight
#初始化球的半徑
self.randius = randint(10,80)
#隨機(jī)產(chǎn)生球的顏色
rc = lambda : randint(0,255)
self.color = '#%02x%02x%02x'%(rc(),rc(),rc())
def create_ball(self):
#計(jì)算得到用于創(chuàng)建球的四個(gè)坐標(biāo)
x1 = self.x_pos - self.randius
y1 = self.y_pos - self.randius
x2 = self.x_pos + self.randius
y2 = self.y_pos + self.randius
#畫球
self.item =self.canvas.create_oval(x1,y1,x2,y2,fill = self.color,outline = self.color)
def move_ball(self):
#球按照指定距離移動(dòng),如果碰到障礙就向相反的方向運(yùn)動(dòng)
self.x_pos += self.x_move
self.y_pos += self.y_move
if self.x_pos >= self.scrnwidth - self.randius:
self.x_move = -self.x_move
elif self.y_pos >= self.scrnheight - self.randius:
self.y_move = -self.y_move
elif self.x_pos < self.randius:
self.x_move = abs(self.x_move)
elif self.y_pos < self.randius:
self.y_move = abs(self.y_move)
self.canvas.move(self.item,self.x_move,self.y_move)
class Screensaver():
balls = []
def __init__(self,ball_nums):
self.win = Tk()
self.width = self.win.winfo_screenwidth()
self.height = self.win.winfo_screenheight()
self.win.overrideredirect(True)
self.win.attributes('-alpha',1)
#綁定事件,有任何動(dòng)作退出屏保
self.win.bind('<Any-Button>',self.exit_screensaver)
self.win.bind('<Motion>',self.exit_screensaver )
self.canvas = Canvas(self.win,width = self.width,height = self.height,bg="#FFFFFF")#背景 顏色自己隨便調(diào)整,至于啥顏色就看自己的心情了
self.canvas.pack()
for i in range(0,ball_nums):
ball = Randball(self.canvas,scrnwidth=self.width,scrnheight=self.height)
ball.create_ball()
self.balls.append(ball)
self.run_screensaver()
self.win.mainloop()
def run_screensaver(self):
for ball in self.balls:
ball.move_ball()
self.canvas.after(30,self.run_screensaver)
def exit_screensaver(self,event):
self.win.destroy()
def main():
Screensaver(30)#屏保上球的個(gè)數(shù)
if __name__=='__main__':
main()
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python操作Excel神器openpyxl看這一篇就夠了
Python使用openpyxl讀寫excel文件這是一個(gè)第三方庫(kù),可以處理xlsx格式的Excel文件,下面這篇文章主要給大家介紹了關(guān)于python操作Excel神器openpyxl的相關(guān)資料,需要的朋友可以參考下2023-04-04
keras.layers.Layer中無(wú)法定義name的問(wèn)題及解決
這篇文章主要介紹了keras.layers.Layer中無(wú)法定義name的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
PyQt+socket實(shí)現(xiàn)遠(yuǎn)程操作服務(wù)器的方法示例
這篇文章主要介紹了PyQt+socket實(shí)現(xiàn)遠(yuǎn)程操作服務(wù)器的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
python實(shí)現(xiàn)翻轉(zhuǎn)棋游戲(othello)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)翻轉(zhuǎn)棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07
Python?sklearn轉(zhuǎn)換器估計(jì)器和K-近鄰算法
這篇文章主要介紹了Python?sklearn轉(zhuǎn)換器估計(jì)器和K-近鄰算法,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-08-08
利用Python中?Rembg庫(kù)實(shí)現(xiàn)去除圖片背景
這篇文章主要介紹了利用Python中?Rembg庫(kù)實(shí)現(xiàn)去除圖片背景,文章基于?Rembg庫(kù)得運(yùn)用展開(kāi)詳細(xì)介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-05-05
Pygame用200行代碼實(shí)現(xiàn)俄羅斯方塊
俄羅斯方塊的邏輯很簡(jiǎn)單,就是幾個(gè)方塊組合在一起,然后下落,當(dāng)其碰到四周的墻壁后便無(wú)法移動(dòng),若某行被方塊所填滿,那么就刪除這一行,然后此行上面的所有方塊下降一行,本文給大家介紹了用Pygame實(shí)現(xiàn)俄羅斯方塊,文中代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12

