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中用Ctrl+C终止多线程程序的问题解决
Mar 30 Python
深入浅析python继承问题
May 29 Python
PyQt5每天必学之进度条效果
Apr 19 Python
django中静态文件配置static的方法
May 20 Python
Python3网络爬虫开发实战之极验滑动验证码的识别
Aug 02 Python
详解Python中的正斜杠与反斜杠
Aug 09 Python
Golang GBK转UTF-8的例子
Aug 26 Python
Python imageio读取视频并进行编解码详解
Dec 10 Python
opencv3/python 鼠标响应操作详解
Dec 11 Python
如何使用repr调试python程序
Feb 28 Python
Django多数据库联用实现方法解析
Nov 12 Python
PyQt5中QSpinBox计数器的实现
Jan 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
phpmyadmin显示utf8_general_ci中文乱码的问题终级篇
2013/04/08 PHP
关于PHPDocument 代码注释规范的总结
2013/06/25 PHP
php上传文件,创建递归目录的实例代码
2013/10/18 PHP
使用PHP导出Word文档的原理和实例
2013/10/21 PHP
php计算数组相同值出现次数的代码(array_count_values)
2015/01/20 PHP
php导出中文内容excel文件类实例
2015/07/06 PHP
PHP制作用户注册系统
2015/10/23 PHP
PHP实现生成数据字典功能示例
2018/05/24 PHP
使用git迁移Laravel项目至新开发环境的步骤详解
2020/04/06 PHP
JS 操作符整理[推荐收藏]
2011/11/15 Javascript
ko knockoutjs动态属性绑定技巧应用
2012/11/14 Javascript
如何使用Jquery获取Form表单中被选中的radio值
2013/08/09 Javascript
JS 实现导航栏悬停效果
2013/09/23 Javascript
使用 Node.js 做 Function Test实现方法
2013/10/25 Javascript
jQuery实现的导航条切换可显示隐藏
2014/10/22 Javascript
js实现上传图片预览的方法
2015/02/09 Javascript
js判断日期时间有效性的方法
2015/10/24 Javascript
javascript时间排序算法实现活动秒杀倒计时效果
2021/01/28 Javascript
js 原型对象和原型链理解
2017/02/09 Javascript
使用vue.js写一个tab选项卡效果
2017/03/25 Javascript
JS表单传值和URL编码转换
2018/03/03 Javascript
vue绑定事件后获取绑定事件中的this方法
2018/09/15 Javascript
通过seajs实现JavaScript的模块开发及按模块加载
2019/06/06 Javascript
webpack4.0+vue2.0利用批处理生成前端单页或多页应用的方法
2019/06/28 Javascript
[04:29]DOTA2亚洲邀请赛小组赛第一日 TOP10精彩集锦
2015/02/01 DOTA
使用 Python 获取 Linux 系统信息的代码
2014/07/13 Python
Python 26进制计算实现方法
2015/05/28 Python
理解Python垃圾回收机制
2016/02/12 Python
Python set常用操作函数集锦
2017/11/15 Python
Django封装交互接口代码
2020/07/12 Python
python缩进长度是否统一
2020/08/02 Python
预订旅游活动、景点和旅游:GetYourGuide
2019/09/29 全球购物
优秀社区干部事迹材料
2014/02/03 职场文书
经营目标责任书
2015/05/08 职场文书
借钱欠条怎么写
2015/07/03 职场文书
2015年中秋放假通知范文
2015/08/18 职场文书