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实现类似ftp传输文件的网络程序示例
Apr 08 Python
Python通过90行代码搭建一个音乐搜索工具
Jul 29 Python
Python使用BeautifulSoup库解析HTML基本使用教程
Mar 31 Python
python机器学习理论与实战(二)决策树
Jan 19 Python
详谈Numpy中数组重塑、合并与拆分方法
Apr 17 Python
在python中pandas读文件,有中文字符的方法
Dec 12 Python
Python 一键制作微信好友图片墙的方法
May 16 Python
Flask框架工厂函数用法实例分析
May 25 Python
python实战串口助手_解决8串口多个发送的问题
Jun 12 Python
python爬虫爬取监控教务系统的思路详解
Jan 08 Python
TensorFlow实现保存训练模型为pd文件并恢复
Feb 06 Python
Python批量启动多线程代码实例
Feb 18 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中去除换行解决办法小结(PHP_EOL)
2011/11/27 PHP
浅析Dos下运行php.exe,出现没有找到php_mbstring.dll 错误的解决方法
2013/06/29 PHP
PHP实现数组根据某个字段进行水平合并,横向合并案例分析
2019/10/08 PHP
jquery可见性过滤选择器使用示例
2013/06/24 Javascript
js jquery分别实现动态的文件上传操作按钮的添加和删除
2014/01/13 Javascript
JS对象深度克隆实例分析
2017/03/16 Javascript
JavaScript获取tr td 的三种方式全面总结(推荐)
2017/08/15 Javascript
新手必须知的Node.js 4个JavaScript基本概念
2018/09/16 Javascript
vue实现购物车抛物线小球动画效果的方法详解
2019/02/13 Javascript
Vue+Koa2 打包后进行线上部署的教程详解
2019/07/31 Javascript
axios如何取消重复无用的请求详解
2019/12/15 Javascript
JavaScript缺少insertAfter解决方案
2020/07/03 Javascript
JavaScript中的函数式编程详解
2020/08/22 Javascript
Javascript confirm多种使用方法解析
2020/09/25 Javascript
Python导入oracle数据的方法
2015/07/10 Python
python在不同层级目录import模块的方法
2016/01/31 Python
用Python编写简单的微博爬虫
2016/03/04 Python
Python中将变量按行写入txt文本中的方法
2018/04/03 Python
Python访问MongoDB,并且转换成Dataframe的方法
2018/10/15 Python
Python facenet进行人脸识别测试过程解析
2019/08/16 Python
解决Atom安装Hydrogen无法运行python3的问题
2019/08/28 Python
Python递归及尾递归优化操作实例分析
2020/02/01 Python
解决pycharm导入本地py文件时,模块下方出现红色波浪线的问题
2020/06/01 Python
世界上最好的威士忌和烈性酒购买网站:The Whisky Exchange
2016/11/20 全球购物
利物浦足球俱乐部官方网上商店:Liverpool FC Official Store
2018/01/13 全球购物
性能服装:HYLETE
2018/08/14 全球购物
KEEN美国官网:美国人气户外休闲鞋品牌
2021/03/09 全球购物
Javascript如何发送一个Ajax请求
2015/01/26 面试题
在网络中有两台主机A和B,并通过路由器和其他交换设备连接起来,已经确认物理连接正确无误,怎么来测试这两台机器是否连通?如果不通,怎么来判断故障点?怎么排
2014/01/13 面试题
地理科学专业毕业生求职信
2013/10/15 职场文书
幼儿园园长岗位职责
2013/11/26 职场文书
总经理任命书范本
2014/06/05 职场文书
幼儿园端午节活动方案
2014/08/25 职场文书
八荣八耻演讲稿
2014/09/15 职场文书
党的群众路线教育实践活动学习计划
2014/11/03 职场文书
各国货币符号大全
2022/02/17 杂记