首页 > 编程 > Python > 正文

python tkinter实现屏保程序

2019-11-25 12:10:28
字体:
来源:转载
供稿:网友

本文实例为大家分享了python tkinter实现屏保程序的具体代码,供大家参考,具体内容如下

该脚本摘录自:2014年辛星tkinter教程第二版

#!/usr/bin/env python from Tkinter import *from random import randint class RandomBall(object):  def __init__(self, canvas, screenwidth, screenheight):    self.canvas = canvas    self.xpos = randint(10, int(screenwidth))    self.ypos = randint(10, int(screenheight))    self.xspeed = randint(6, 12)    self.yspeed = randint(6, 12)    self.screenwidth = screenwidth    self.screenheight = screenheight    self.radius = randint(40, 70)    color = lambda : randint(0, 255)    self.color = '#%02x%02x%02x' % (color(), color(), color())   def create_ball(self):    x1 = self.xpos - self.radius    y1 = self.ypos - self.radius    x2 = self.xpos + self.radius    y2 = self.ypos + self.radius    self.itm = self.canvas.create_oval(x1, y1, x2, y2, fill=self.color,            outline=self.color)   def move_ball(self):    self.xpos += self.xspeed    self.ypos += self.yspeed    if self.ypos >= self.screenheight - self.radius:      self.yspeed = -self.yspeed    if self.ypos <= self.radius:      self.yspeed = abs(self.yspeed)    if self.xpos >= self.screenwidth - self.radius or self.xpos <= self.radius:      self.xspeed = -self.xspeed    self.canvas.move(self.itm, self.xspeed, self.yspeed) class ScreenSaver:  def __init__(self, num_balls):    self.balls = []    self.root = Tk()    w, h = self.root.winfo_screenwidth(), self.root.winfo_screenheight()    self.root.overrideredirect(1)    self.root.attributes('-alpha', 0.3)    self.root.bind('<Key>', self.myquit)    self.root.bind('<Motion>', self.myquit)    self.canvas = Canvas(self.root, width=w, height=h)    self.canvas.pack()    for i in range(num_balls):      ball = RandomBall(self.canvas, screenwidth=w, screenheight=h)      ball.create_ball()      self.balls.append(ball)    self.run_screen_saver()    self.root.mainloop()   def run_screen_saver(self):    for ball in self.balls:      ball.move_ball()    self.canvas.after(50, self.run_screen_saver)   def myquit(self, event):    self.root.destroy() if __name__ == "__main__":  ScreenSaver(18)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表