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实现ID3决策树算法
Dec 20 Python
Python获取指定文件夹下的文件名的方法
Feb 06 Python
Python numpy 提取矩阵的某一行或某一列的实例
Apr 03 Python
python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)
Aug 06 Python
matlab灰度图像调整及imadjust函数的用法详解
Feb 27 Python
服务器端jupyter notebook映射到本地浏览器的操作
Apr 14 Python
python 比较字典value的最大值的几种方法
Apr 17 Python
python多进程使用函数封装实例
May 02 Python
python爬虫使用requests发送post请求示例详解
Aug 05 Python
python 怎样进行内存管理
Nov 10 Python
Python根据URL地址下载文件并保存至对应目录的实现
Nov 15 Python
python爬取招聘要求等信息实例
Nov 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中数组元素升序、降序以及重新排序的函数
2013/06/20 PHP
php使用ob_flush不能每隔一秒输出原理分析
2015/06/02 PHP
php中get_magic_quotes_gpc()函数说明
2017/02/06 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
Jquery实现的角色左右选择特效
2014/05/21 Javascript
jQuery+html5实现div弹出层并遮罩背景
2015/04/15 Javascript
javascript实现验证身份证号的有效性并提示
2015/04/30 Javascript
JavaScript设计模式经典之命令模式
2016/02/24 Javascript
分享jQuery封装好的一些常用操作
2016/07/28 Javascript
基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作
2016/08/29 Javascript
深入理解JavaScript 参数按值传递
2017/05/24 Javascript
nodejs基于express实现文件上传的方法
2018/03/19 NodeJs
layer.js open 隐藏滚动条的例子
2019/09/05 Javascript
layui layer select 选择被遮挡的解决方法
2019/09/21 Javascript
uniapp微信小程序实现一个页面多个倒计时
2020/11/01 Javascript
浅谈vue.watch的触发条件是什么
2020/11/07 Javascript
vue-drawer-layout实现手势滑出菜单栏
2020/11/19 Vue.js
JavaScript实现复选框全选和取消全选
2020/11/20 Javascript
Python中文件遍历的两种方法
2014/06/16 Python
利用python代码写的12306订票代码
2015/12/20 Python
Python实现PS滤镜特效Marble Filter玻璃条纹扭曲效果示例
2018/01/29 Python
对python修改xml文件的节点值方法详解
2018/12/24 Python
python交换两个变量的值方法
2019/01/12 Python
python3 pillow模块实现简单验证码
2019/10/31 Python
让Django的BooleanField支持字符串形式的输入方式
2020/05/20 Python
你的自行车健身专家:FaFit24
2016/11/16 全球购物
C++如何引用一个已经定义过的全局变量
2014/08/25 面试题
编辑个人求职信范文
2013/09/21 职场文书
自荐信不宜过于夸大
2013/11/06 职场文书
乡镇领导班子四风对照检查材料
2014/09/27 职场文书
2014酒店客房部工作总结
2014/12/16 职场文书
餐馆开业致辞
2015/08/01 职场文书
mysql外连接与内连接查询的不同之处
2021/06/03 MySQL
简单谈谈Python面向对象的相关知识
2021/06/28 Python
Alexa停服!网站排名将何去何从?目前还没有替代品。
2022/04/15 杂记
docker 制作mysql镜像并自动安装
2022/05/20 Servers