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 文件操作技巧(File operation) 实例代码分析
Aug 11 Python
Python中有趣在__call__函数
Jun 21 Python
Python MySQLdb 使用utf-8 编码插入中文数据问题
Mar 13 Python
python面向对象多线程爬虫爬取搜狐页面的实例代码
May 31 Python
Python3 使用cookiejar管理cookie的方法
Dec 28 Python
Python初学者常见错误详解
Jul 02 Python
Apache部署Django项目图文详解
Jul 30 Python
利用Python绘制Jazz网络图的例子
Nov 21 Python
Pytorch之finetune使用详解
Jan 18 Python
Python3+PyCharm+Django+Django REST framework配置与简单开发教程
Feb 16 Python
Python+tkinter实现高清图片保存
Mar 13 Python
Python软件包安装的三种常见方法
Jul 07 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 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)
2010/05/16 PHP
php加密解密实用类分享
2014/01/07 PHP
javascript 类定义的4种方法
2009/09/12 Javascript
基于jQuery的一个扩展form序列化到json对象
2010/12/09 Javascript
jquery实现点击TreeView文本父节点展开/折叠子节点
2013/01/10 Javascript
获得Javascript对象属性个数的示例代码
2013/11/21 Javascript
用jquery.sortElements实现table排序
2014/05/04 Javascript
jQuery 过滤方法filter()选择具有特殊属性的元素
2014/06/15 Javascript
jquery制作select列表双向选择示例代码
2014/09/02 Javascript
jQuery validate插件submitHandler提交导致死循环解决方法
2016/01/21 Javascript
浅谈Sublime Text 3运行JavaScript控制台
2016/06/06 Javascript
jQuery实现的纵向下拉菜单实例详解【附demo源码下载】
2016/07/09 Javascript
zepto与jquery的区别及zepto的不同使用8条小结
2016/07/28 Javascript
JS基于对象的特性实现去除数组中重复项功能详解
2017/11/17 Javascript
nodeJS微信分享
2017/12/20 NodeJs
浅谈Angular HttpClient简单入门
2018/05/04 Javascript
Vue引入sass并配置全局变量的方法
2018/06/27 Javascript
微信小程序后台持续定位功能使用详解
2019/08/23 Javascript
Vue中jsx不完全应用指南小结
2019/11/01 Javascript
NodeJs crypto加密制作token的实现代码
2019/11/15 NodeJs
[18:16]sakonoko 2017年卡尔集锦
2018/02/06 DOTA
[02:42]岂曰无衣,与子同袍!DOTA2致敬每一位守护人
2020/02/17 DOTA
Python里隐藏的“禅”
2014/06/16 Python
python根据京东商品url获取产品价格
2015/08/09 Python
python分布式环境下的限流器的示例
2017/10/26 Python
Python获取好友地区分布及好友性别分布情况代码详解
2019/07/10 Python
python基础 range的用法解析
2019/08/23 Python
python 字典的打印实现
2019/09/26 Python
Python之变量类型和if判断方式
2020/05/05 Python
Python 实现将numpy中的nan和inf,nan替换成对应的均值
2020/06/08 Python
keras 回调函数Callbacks 断点ModelCheckpoint教程
2020/06/18 Python
Python datetime 如何处理时区信息
2020/09/02 Python
scrapy结合selenium解析动态页面的实现
2020/09/28 Python
军训自我鉴定
2014/01/22 职场文书
四风之害观后感
2015/06/09 职场文书
总结Python变量的相关知识
2021/06/28 Python