python tkinter实现屏保程序


Posted in Python onJuly 30, 2019

本文实例为大家分享了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)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中使用urllib2获取http请求状态码的代码例子
Jul 07 Python
Python3.2模拟实现webqq登录
Feb 15 Python
python访问抓取网页常用命令总结
Apr 11 Python
Django框架创建mysql连接与使用示例
Jul 29 Python
python numpy存取文件的方式
Apr 01 Python
pandas将多个dataframe以多个sheet的形式保存到一个excel文件中
Oct 10 Python
Windows下PyCharm2018.3.2 安装教程(图文详解)
Oct 24 Python
Scrapy框架实现的登录网站操作示例
Feb 06 Python
Python列表倒序输出及其效率详解
Mar 04 Python
keras的三种模型实现与区别说明
Jul 03 Python
解决python3.x安装numpy成功但import出错的问题
Nov 17 Python
Python中glob库实现文件名的匹配
Jun 18 Python
python pandas 时间日期的处理实现
Jul 30 #Python
Django 反向生成url实例详解
Jul 30 #Python
Python Pandas数据中对时间的操作
Jul 30 #Python
python tkinter实现彩球碰撞屏保
Jul 30 #Python
详解python pandas 分组统计的方法
Jul 30 #Python
python文档字符串(函数使用说明)使用详解
Jul 30 #Python
python3.6 tkinter实现屏保小程序
Jul 30 #Python
You might like
php在线代理转向代码
2012/05/05 PHP
PHP运行环境配置与开发环境的配置(图文教程)
2013/06/04 PHP
PHP延迟静态绑定示例分享
2014/06/22 PHP
php传值赋值和传地址赋值用法实例分析
2015/06/20 PHP
php获取、检查类名、函数名、方法名的函数方法
2015/06/25 PHP
PHP中filter函数校验数据的方法详解
2015/07/31 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
tp5(thinkPHP5)框架实现多数据库查询的方法
2019/01/10 PHP
IE与firefox之jquery用法区别
2008/10/03 Javascript
JavaScript 异步方法队列链实现代码分析
2010/06/05 Javascript
JavaScript 放大镜 移动镜片效果代码
2011/05/09 Javascript
javascript截取字符串(通过substring实现并支持中英文混合)
2013/06/24 Javascript
面向对象设计模式的核心法则
2013/11/10 Javascript
js读取csv文件并使用json显示出来
2015/01/09 Javascript
Jquery中request和request.form和request.querystring的区别
2015/11/26 Javascript
js面向对象的写法
2016/02/19 Javascript
基于jquery实现弹幕效果
2016/09/29 Javascript
mockjs,json-server一起搭建前端通用的数据模拟框架教程
2017/12/18 Javascript
浅谈Python程序与C++程序的联合使用
2015/04/07 Python
Python实现mysql数据库更新表数据接口的功能
2017/11/19 Python
浅谈python 读excel数值为浮点型的问题
2018/12/25 Python
Python常用库大全及简要说明
2020/01/17 Python
Python图像处理库PIL的ImageDraw模块介绍详解
2020/02/26 Python
在线购买廉价折扣书籍和小说:BookOutlet.com
2018/02/19 全球购物
Vita Fede官网:在意大利手工制作,在纽约市设计
2019/10/25 全球购物
别名指示符是什么
2012/10/08 面试题
Java Servlet API中forward() 与redirect()的区别
2014/04/20 面试题
端午节演讲稿
2014/05/23 职场文书
计算机系统管理员求职信
2014/06/20 职场文书
“向国旗敬礼”活动策划方案(4篇)
2014/09/27 职场文书
防火标语大全
2014/10/06 职场文书
2015年大学元旦晚会活动策划书
2014/12/09 职场文书
开会通知
2015/04/20 职场文书
小学生法制教育心得体会
2016/01/14 职场文书
一条 SQL 语句执行过程
2022/03/17 MySQL
Python何绘制带有背景色块的折线图
2022/04/23 Python