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的web.py框架实现类似Django的ORM查询的教程
May 02 Python
python使用wmi模块获取windows下硬盘信息的方法
May 15 Python
Python合并字典键值并去除重复元素的实例
Dec 18 Python
一张图带我们入门Python基础教程
Feb 05 Python
Python正则表达式教程之一:基础篇
Mar 02 Python
python中redis查看剩余过期时间及用正则通配符批量删除key的方法
Jul 30 Python
tensorflow实现tensor中满足某一条件的数值取出组成新的tensor
Jan 04 Python
python IDLE添加行号显示教程
Apr 25 Python
python实现图片,视频人脸识别(opencv版)
Nov 18 Python
Pytorch实现图像识别之数字识别(附详细注释)
May 11 Python
聊聊pytorch测试的时候为何要加上model.eval()
May 23 Python
python非标准时间的转换
Jul 25 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遍历目录并返回统计目录大小
2014/06/09 PHP
全面解读PHP的人气开发框架Laravel
2015/10/15 PHP
Laravel框架自定义公共函数的引入操作示例
2019/04/16 PHP
PHP针对redis常用操作实例详解
2019/08/17 PHP
PHP7 foreach() 函数修改
2021/03/09 PHP
推荐一些非常不错的javascript学习资源站点
2007/08/29 Javascript
JavaScript高级程序设计(第3版)学习笔记2 js基础语法
2012/10/11 Javascript
Jquery实现仿新浪微博获取文本框能输入的字数代码
2013/02/22 Javascript
简单几行JS Code实现IE邮件转发新浪微博
2013/07/03 Javascript
JS+DIV实现鼠标划过切换层效果的实例代码
2013/11/26 Javascript
javascript在子页面中函数无法调试问题解决方法
2014/01/17 Javascript
EasyUI 结合JS导出Excel文件的实现方法
2016/11/10 Javascript
PHP+jquery+ajax实现分页
2016/12/09 Javascript
Angular在模板驱动表单中自定义校验器的方法
2017/08/09 Javascript
Vue+Vux项目实践完整代码
2017/11/30 Javascript
微信小程序实现点击导航条切换页面
2020/11/19 Javascript
[02:38]2018年度DOTA2最佳劣单位选手-完美盛典
2018/12/17 DOTA
python求众数问题实例
2014/09/26 Python
python操作gmail实例
2015/01/14 Python
Pandas统计重复的列里面的值方法
2019/01/30 Python
Python GUI编程完整示例
2019/04/04 Python
Django中自定义模型管理器(Manager)及方法
2019/09/23 Python
CentOS7下安装python3.6.8的教程详解
2020/01/03 Python
使用pytorch搭建AlexNet操作(微调预训练模型及手动搭建)
2020/01/18 Python
安装完Python包然后找不到模块的解决步骤
2020/02/13 Python
Python selenium 加载并保存QQ群成员,去除其群主、管理员信息的示例代码
2020/05/28 Python
浏览器实现移动端高性能css3动画(开启gpu加速)
2013/12/23 HTML / CSS
美国婚戒购物网站:Anjays Designs
2017/06/28 全球购物
马来西亚户外装备商店:PTT Outdoor
2019/07/13 全球购物
环境科学专业个人求职的自我评价
2013/11/28 职场文书
《手指教学》反思
2014/02/14 职场文书
师德建设实施方案
2014/03/21 职场文书
没有孩子的离婚协议书怎么写
2014/09/17 职场文书
2014年大学生社会实践自我鉴定
2014/09/26 职场文书
给老婆的检讨书(搞笑版)
2015/05/06 职场文书
MySql按时,天,周,月进行数据统计
2022/08/14 MySQL