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基于multiprocessing的多进程创建方法
Jun 04 Python
python开发之字符串string操作方法实例详解
Nov 12 Python
Python基于select实现的socket服务器
Apr 13 Python
Python实现爬取需要登录的网站完整示例
Aug 19 Python
Python内置模块turtle绘图详解
Dec 09 Python
Python 编码规范(Google Python Style Guide)
May 05 Python
基于tensorflow加载部分层的方法
Jul 26 Python
python爬取内容存入Excel实例
Feb 20 Python
python取均匀不重复的随机数方式
Nov 27 Python
解决Tensorboard可视化错误:不显示数据 No scalar data was found
Feb 15 Python
Python importlib动态导入模块实现代码
Apr 16 Python
Python3接口性能测试实例代码
Jun 20 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开发过程中关于继承的使用方法分享
2011/06/17 PHP
PHP学习笔记 (1) 环境配置与代码调试
2011/06/19 PHP
PHP三元运算符的结合性介绍
2012/01/10 PHP
PHP小教程之实现双向链表
2014/06/12 PHP
php遍历、读取文件夹中图片并分页显示图片的方法
2016/11/15 PHP
解决PHP 7编译安装错误:cannot stat ‘phar.phar’: No such file or directory
2017/02/25 PHP
js 验证身份证信息有效性
2014/03/28 Javascript
jQuery的事件委托实例分析
2015/07/15 Javascript
JS实现下拉菜单赋值到文本框的方法
2015/08/18 Javascript
jQuery使用正则验证15/18身份证的方法示例
2017/04/27 jQuery
Angularjs 双向绑定时字符串的转换成数字类型的问题
2017/06/12 Javascript
原生JS实现循环Nodelist Dom列表的4种方式示例
2018/02/11 Javascript
对layui中表单元素的使用详解
2018/08/15 Javascript
微信小程序云开发之云函数详解
2019/05/16 Javascript
了解javascript中的Dom操作
2019/05/27 Javascript
关于JSON解析的实现过程解析
2019/10/08 Javascript
Vue 实现点击空白处隐藏某节点的三种方式(指令、普通、遮罩)
2019/10/23 Javascript
Vue element-ui父组件控制子组件的表单校验操作
2020/07/17 Javascript
[01:11:32]VG vs FNATIC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python 将Matrix、Dict保存到文件的方法
2018/10/30 Python
Python完全识别验证码自动登录实例详解
2019/11/24 Python
TensorFlow打印输出tensor的值
2020/04/19 Python
Python实现在线批量美颜功能过程解析
2020/06/10 Python
python实现画图工具
2020/08/27 Python
HTML5重塑Web世界它将如何改变互联网
2012/12/17 HTML / CSS
HTML5中的网络存储实现方式
2020/04/28 HTML / CSS
人力资源主管职责范本
2014/03/05 职场文书
民政局副局长民主生活会个人对照检查材料
2014/09/19 职场文书
2014年扶贫工作总结
2014/11/18 职场文书
读书笔记怎么写
2015/07/01 职场文书
2015选调生工作总结
2015/07/24 职场文书
教师法制教育培训学习心得体会
2016/01/14 职场文书
2019最新企业员工考勤管理制度(通用版)!
2019/07/02 职场文书
蓝天保卫战收官在即 :15行业将开展环保分级评价
2019/07/19 职场文书
MySQL中InnoDB存储引擎的锁的基本使用教程
2021/05/26 MySQL
Flask response响应的具体使用
2021/07/15 Python