python代码雨屏保_python写的屏保程序

本文介绍了一个使用Python编写的代码雨屏幕保护程序。通过Tkinter库创建了一个Canvas对象,然后利用Randball类随机生成球体的位置、颜色和移动距离。程序会不断移动这些球体,当球体碰到屏幕边缘时,会改变移动方向。最后,通过Screensaver类实例化多个球体并启动屏幕保护程序。
摘要由CSDN通过智能技术生成

__author__ = 'ChenYan'

from random importrandintfrom tkinter import *

classRandball():def __init__(self, canvas, scrnwidth, scrnheight):#初始化画布

self.canvas =canvas#初始化球的圆心坐标

self.x_pos = randint(80, int(scrnwidth))

self.y_pos= randint(80, int(scrnheight))#球移动的距离

self.x_move = 10self.y_move= 10

#整个屏幕的宽和高

self.scrnwidth =scrnwidth

self.scrnheight=scrnheight#初始化球的半径

self.radius = randint(40, 70)#随机产生球的颜色

rc = lambda :randint(0,255)

self.color= '#%02x%02x%02x' %(rc(), rc(), rc())defcreate_ball(self):#计算得到用于创建球的四个坐标

x1 = self.x_pos -self.radius

y1= self.x_pos -self.radius

x2= self.x_pos +self.radius

y2= self.x_pos +self.radius#画球

self.item = self.canvas.create_oval(x1, y1, x2, y2, fill=self.color, outline=self.color)defmove_ball(self):'''按指定的距离移动球,如果球碰到障碍向相反的方向移动'''self.x_pos+=self.x_move

self.y_pos+=self.y_moveif self.x_pos >= self.scrnwidth -self.radius:

self.x_move= -self.x_moveif self.y_pos >= self.scrnheight -self.radius:

self.y_move= -self.y_moveif self.x_pos

self.x_move=abs(self.x_move)if self.y_pos

self.y_move=abs(self.y_move)

self.canvas.move(self.item, self.x_move, self.y_move)classScreensaver():

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', 0.3)#绑定事件,有任何动作退出屏保

self.win.bind('', self.exit_screensaver)

self.win.bind('', self.exit_screensaver)

self.canvas= Canvas(self.win, width=self.width, height=self.height, bg='#00FFFF')

self.canvas.pack()for i inrange(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()defrun_screensaver(self):for ball inself.balls:

ball.move_ball()

self.canvas.after(20, self.run_screensaver)defexit_screensaver(self, event):

self.win.destroy()defmain():

Screensaver(15)if __name__=='__main__':

main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值