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脚本来获取Cisco设备信息的示例
May 04 Python
Python实现复杂对象转JSON的方法示例
Jun 22 Python
浅谈Python NLP入门教程
Dec 25 Python
python 文件查找及内容匹配方法
Oct 25 Python
Python常见数据类型转换操作示例
May 08 Python
python 多进程共享全局变量之Manager()详解
Aug 15 Python
Python time库基本使用方法分析
Dec 13 Python
Tensorflow获取张量Tensor的具体维数实例
Jan 19 Python
python如何停止递归
Sep 09 Python
详解Python中如何将数据存储为json格式的文件
Nov 18 Python
python语言time库和datetime库基本使用详解
Dec 25 Python
解决Pytorch修改预训练模型时遇到key不匹配的情况
Jun 05 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 信息采集程序代码
2009/03/17 PHP
Laravel使用scout集成elasticsearch做全文搜索的实现方法
2018/11/30 PHP
B/S开发中常用javaScript技术与代码
2007/03/09 Javascript
远离JS灾难css灾难之 js私有函数和css选择器作为容器
2011/12/11 Javascript
检测input每次的输入是否合法遇到汉字输入就有问题
2012/05/23 Javascript
使用Java实现简单的server/client回显功能的方法介绍
2013/05/03 Javascript
常用的JavaScript验证正则表达式汇总
2013/11/26 Javascript
jQuery动态添加及删除表单上传元素的方法(附demo源码下载)
2016/01/15 Javascript
基于javascript实现tab选项卡切换特效调试笔记
2016/03/30 Javascript
浅析jQuery中使用$所引发的问题
2016/05/29 Javascript
详解Javascript获取缓存和清除缓存API
2017/05/25 Javascript
解决Vue2.0自带浏览器里无法打开的原因(兼容处理)
2017/07/28 Javascript
windows系统下更新nodejs版本的方案
2017/11/24 NodeJs
vue2.0实现前端星星评分功能组件实例代码
2018/02/12 Javascript
jquery的 filter()方法使用教程
2018/03/22 jQuery
PostgreSQL Node.js实现函数计算方法示例
2019/02/12 Javascript
jQuery实现的导航条点击后高亮显示功能示例
2019/03/04 jQuery
微信小程序实现的canvas合成图片功能示例
2019/05/03 Javascript
vue与django集成打包的实现方法
2019/11/11 Javascript
原生js实现无缝轮播图
2020/01/11 Javascript
JS实现网页时钟特效
2020/03/25 Javascript
Vue如何实现监听组件原生事件
2020/07/03 Javascript
关于vue 结合原生js 解决echarts resize问题
2020/07/26 Javascript
[44:39]2014 DOTA2国际邀请赛中国区预选赛 NE VS CNB
2014/05/21 DOTA
[01:01:52]DOTA2-DPC中国联赛正赛 iG vs LBZS BO3 第一场 3月4日
2021/03/11 DOTA
Python用 KNN 进行验证码识别的实现方法
2018/02/06 Python
Python json转字典字符方法实例解析
2020/04/13 Python
Python 开发工具通过 agent 代理使用的方法
2020/09/27 Python
python 模块导入问题汇总
2021/02/01 Python
艺术家策划的室内设计:Curious Egg
2019/03/06 全球购物
幼儿教师演讲稿
2014/05/06 职场文书
演讲稿的写法
2014/05/19 职场文书
学习与创新自我评价
2015/03/09 职场文书
普通员工辞职信范文
2015/05/12 职场文书
珍爱生命主题班会
2015/08/13 职场文书
victoriaMetrics库布隆过滤器初始化及使用详解
2022/04/05 Golang