python3.6 tkinter实现屏保小程序


Posted in Python onJuly 30, 2019

本文实例为大家分享了python3.6 tkinter实现屏保小程序,供大家参考,具体内容如下

该小程序是在闲着没事的时候,随便写的,就当打发无聊了。

该程序是用python3.6写的,调用了python中的tkinter的库(*python2x与python3x的thinter有很多不同的地方,一定要特别注意!!!)

from random import randint
from tkinter import *

class Randball():
  def __init__(self,canvas,scrnwidth,scrnheight):
    #初始化画布
    self.canvas = canvas
    #初始化球的圆心坐标
    self.x_pos = randint(50,int(scrnwidth))#X轴的坐标 randint 随机产生一个范围内的整数
    self.y_pos = randint(50,int(scrnheight))#Y轴的坐标
    #球的移动距离
    self.x_move = 10
    self.y_move = 10
    #整个屏幕的高和宽
    self.scrnwidth =scrnwidth
    self.scrnheight =scrnheight
    #初始化球的半径
    self.randius = randint(10,80)
    #随机产生球的颜色
    rc = lambda : randint(0,255)
    self.color = '#%02x%02x%02x'%(rc(),rc(),rc())
  def create_ball(self):
    #计算得到用于创建球的四个坐标
    x1 = self.x_pos - self.randius
    y1 = self.y_pos - self.randius
    x2 = self.x_pos + self.randius
    y2 = self.y_pos + self.randius
    #画球
    self.item =self.canvas.create_oval(x1,y1,x2,y2,fill = self.color,outline = self.color)

  def move_ball(self):
    #球按照指定距离移动,如果碰到障碍就向相反的方向运动
    self.x_pos += self.x_move
    self.y_pos += self.y_move
    if self.x_pos >= self.scrnwidth - self.randius:
      self.x_move = -self.x_move
    elif self.y_pos >= self.scrnheight - self.randius:
      self.y_move = -self.y_move
    elif self.x_pos < self.randius:
      self.x_move = abs(self.x_move)
    elif self.y_pos < self.randius:
      self.y_move = abs(self.y_move)
    self.canvas.move(self.item,self.x_move,self.y_move)


class Screensaver():
  balls = []
  def __init__(self,ball_nums):
    self.win = Tk()
    self.width = self.win.winfo_screenwidth()
    self.height = self.win.winfo_screenheight()
    self.win.overrideredirect(True)
    self.win.attributes('-alpha',1)
    #绑定事件,有任何动作退出屏保
    self.win.bind('<Any-Button>',self.exit_screensaver)
    self.win.bind('<Motion>',self.exit_screensaver )
    self.canvas = Canvas(self.win,width = self.width,height = self.height,bg="#FFFFFF")#背景 颜色自己随便调整,至于啥颜色就看自己的心情了
    self.canvas.pack()


    for i in range(0,ball_nums):
        ball = Randball(self.canvas,scrnwidth=self.width,scrnheight=self.height)
        ball.create_ball()
        self.balls.append(ball)
    self.run_screensaver()
    self.win.mainloop()
  def run_screensaver(self):
    for ball in self.balls:
      ball.move_ball()
    self.canvas.after(30,self.run_screensaver)
  def exit_screensaver(self,event):
    self.win.destroy()

def main():
  Screensaver(30)#屏保上球的个数

if __name__=='__main__':
  main()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用python Django做网页
Nov 04 Python
使用Python对Access读写操作
Mar 30 Python
使用Python设计一个代码统计工具
Apr 04 Python
python实现嵌套列表平铺的两种方法
Nov 08 Python
PyQt5的PyQtGraph实践系列3之实时数据更新绘制图形
May 13 Python
Python 安装 virturalenv 虚拟环境的教程详解
Feb 21 Python
matplotlib.pyplot.plot()参数使用详解
Jul 28 Python
Python进行统计建模
Aug 10 Python
如何让PyQt5中QWebEngineView与JavaScript交互
Oct 21 Python
numpy数据类型dtype转换实现
Apr 24 Python
Pytorch 实现变量类型转换
May 17 Python
分享Python获取本机IP地址的几种方法
Mar 17 Python
简单了解python变量的作用域
Jul 30 #Python
学习和使用python的13个理由
Jul 30 #Python
Win10系统下安装labelme及json文件批量转化方法
Jul 30 #Python
python利用tkinter实现屏保
Jul 30 #Python
django 微信网页授权登陆的实现
Jul 30 #Python
python tkinter库实现气泡屏保和锁屏
Jul 29 #Python
django迁移数据库错误问题解决
Jul 29 #Python
You might like
在PHP中使用反射技术的架构插件使用说明
2010/05/18 PHP
一些php技巧与注意事项分析
2011/02/03 PHP
PHP动态生成javascript文件的2个例子
2014/04/11 PHP
PHP实现无限级分类(不使用递归)
2015/10/22 PHP
PHP实现登录验证码校验功能
2018/05/17 PHP
PHP addAttribute()函数讲解
2019/02/03 PHP
PHP count()函数讲解
2019/02/03 PHP
JavaScript中的几个关键概念的理解-原型链的构建
2011/05/12 Javascript
如何使用Javascript获取距今n天前的日期
2013/07/08 Javascript
javascript:void(0)是什么意思示例介绍
2013/11/17 Javascript
详解JavaScript中循环控制语句的用法
2015/06/03 Javascript
js实现精确到秒的倒计时效果
2016/05/29 Javascript
JS判断输入字符串长度实例代码(汉字算两个字符,字母数字算一个)
2016/08/02 Javascript
DOM中事件处理概览与原理的全面解析
2016/08/16 Javascript
通过网页查看JS源码中汉字显示乱码的解决方法
2016/10/26 Javascript
一个例子轻松学会Vue.js
2017/01/02 Javascript
AngularJS入门教程二:在路由中传递参数的方法分析
2017/05/27 Javascript
彻底搞懂JavaScript中的apply和call方法(必看)
2017/09/18 Javascript
详解从零搭建 vue2 vue-router2 webpack3 工程
2017/11/22 Javascript
jquery 验证用户名是否重复代码实例
2019/05/14 jQuery
[51:44]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第二场
2018/04/04 DOTA
python实现的解析crontab配置文件代码
2014/06/30 Python
Python中的defaultdict模块和namedtuple模块的简单入门指南
2015/04/01 Python
python中requests模块的使用方法
2015/04/08 Python
详解使用python crontab设置linux定时任务
2016/12/08 Python
详解Python装饰器由浅入深
2016/12/09 Python
Python matplotlib画图时图例说明(legend)放到图像外侧详解
2020/05/16 Python
PyTorch: Softmax多分类实战操作
2020/07/07 Python
阿联酋最好的手机、电子产品和家用电器网上商店:Eros Digital Home
2020/08/09 全球购物
酒店执行总经理岗位职责
2013/12/15 职场文书
机关节能减排实施方案
2014/03/17 职场文书
法律专业求职信
2014/05/24 职场文书
HR必备:销售经理聘用合同范本
2019/08/21 职场文书
vue使用v-model进行跨组件绑定的基本实现方法
2021/04/28 Vue.js
解决pytorch 损失函数中输入输出不匹配的问题
2021/06/05 Python
springboot中rabbitmq实现消息可靠性机制详解
2021/09/25 Java/Android