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中marshal对象序列化的相关知识
Jul 01 Python
Python中如何优雅的合并两个字典(dict)方法示例
Aug 09 Python
Python基于递归和非递归算法求两个数最大公约数、最小公倍数示例
May 21 Python
从DataFrame中提取出Series或DataFrame对象的方法
Nov 10 Python
win8.1安装Python 2.7版环境图文详解
Jul 01 Python
详解PyTorch中Tensor的高阶操作
Aug 18 Python
Windows10下Tensorflow2.0 安装及环境配置教程(图文)
Nov 21 Python
Python使用turtle库绘制小猪佩奇(实例代码)
Jan 16 Python
Python随机数函数代码实例解析
Feb 09 Python
详解python中GPU版本的opencv常用方法介绍
Jul 24 Python
Python如何输出警告信息
Jul 30 Python
Python编写车票订购系统 Python实现快递收费系统
Aug 14 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的Yii框架中请求与响应的处理流程
2016/03/17 PHP
PHP清除缓存的几种方法总结
2017/09/12 PHP
PHP设计模式之装饰器模式定义与用法简单示例
2018/08/13 PHP
Laravel框架Eloquent ORM修改数据操作示例
2019/12/03 PHP
a标签的css样式四个状态
2021/03/09 HTML / CSS
运用Windows XP附带的Msicuu.exe、Msizap.exe来彻底卸载顽固程序
2007/04/21 Javascript
js实现右下角可关闭最小化div(可用于展示推荐内容)
2013/06/24 Javascript
流量统计器如何鉴别C#:WebBrowser中伪造referer
2015/01/07 Javascript
jQuery实现表格行上移下移和置顶的方法
2015/05/22 Javascript
原生javascript实现addClass,removeClass,hasClass函数
2016/02/25 Javascript
利用Node.js制作爬取大众点评的爬虫
2016/09/22 Javascript
javascript实现秒表计时器的制作方法
2017/02/16 Javascript
react-native之ART绘图方法详解
2017/08/08 Javascript
解决Linux无法正常安装与卸载Node.js的方法
2018/01/19 Javascript
layui 数据表格 点击分页按钮 监听事件的实例
2019/09/02 Javascript
VUE注册全局组件和局部组件过程解析
2019/10/10 Javascript
js实现拖拽元素选择和删除
2020/08/25 Javascript
Nuxt.js的路由跳转操作(页面跳转nuxt-link)
2020/11/06 Javascript
Python编程实现双击更新所有已安装python模块的方法
2017/06/05 Python
Python如何快速实现分布式任务
2017/07/06 Python
Python中矩阵库Numpy基本操作详解
2017/11/21 Python
记录Python脚本的运行日志的方法
2019/06/05 Python
Python使用enumerate获取迭代元素下标
2020/02/03 Python
Python matplotlib读取excel数据并用for循环画多个子图subplot操作
2020/07/14 Python
说一下Linux下有关用户和组管理的命令
2014/08/18 面试题
自学考试自我鉴定范文
2013/09/26 职场文书
房地产项目建议书
2014/03/12 职场文书
公司寄语大全
2014/04/10 职场文书
优质服务口号
2014/06/11 职场文书
大学活动总结模板
2014/07/10 职场文书
高考作弊检讨书1500字
2015/02/16 职场文书
银行优秀员工推荐信
2015/03/24 职场文书
2015年护士长个人工作总结
2015/04/24 职场文书
mysql 8.0.24 安装配置方法图文教程
2021/05/12 MySQL
css height属性中的calc方法详解
2021/06/03 HTML / CSS
threejs太阳光与阴影效果实例代码
2022/04/05 Javascript