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写入中英文字符串到文件的方法
May 06 Python
python 字典(dict)按键和值排序
Jun 28 Python
python开发利器之ulipad的使用实践
Mar 16 Python
Python读取Word(.docx)正文信息的方法
Mar 15 Python
python pandas 组内排序、单组排序、标号的实例
Apr 12 Python
Python可变参数*args和**kwargs用法实例小结
Apr 27 Python
python实现Dijkstra静态寻路算法
Jan 17 Python
Python查找数组中数值和下标相等的元素示例【二分查找】
Feb 13 Python
Opencv实现抠图背景图替换功能
May 21 Python
python实现证件照换底功能
Aug 20 Python
python根据时间获取周数代码实例
Sep 30 Python
python plotly画柱状图代码实例
Dec 13 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
在DC的漫画和电影中,蝙蝠侠的宿敌,小丑的真名是什么?
2020/04/09 欧美动漫
php对称加密算法示例
2014/05/07 PHP
php去掉URL网址中带有PHPSESSID的配置方法
2014/07/08 PHP
php实现兼容2038年后Unix时间戳转换函数
2015/03/18 PHP
PHP区块查询实现方法分析
2018/05/12 PHP
php二维数组按某个键值排序的实例讲解
2019/02/15 PHP
一步一步教你写一个jQuery的插件教程(Plugin)
2009/09/03 Javascript
JavaScript 组件之旅(三):用 Ant 构建组件
2009/10/28 Javascript
关于jquery append() html时的小问题的解决方法
2010/12/16 Javascript
JavaScript高级程序设计阅读笔记(十六) javascript检测浏览器和操作系统-detect.js
2012/08/14 Javascript
javascript制作坦克大战全纪录(1)
2014/11/27 Javascript
JavaScript中的比较操作符&gt;、=、
2014/12/31 Javascript
Linux下编译安装php libevent扩展实例
2015/02/14 Javascript
Ajax与服务器(JSON)通信实例代码
2016/11/05 Javascript
解析jQueryEasyUI的使用
2016/11/22 Javascript
canvas实现流星雨的背景效果
2017/01/13 Javascript
基于JQuery及AJAX实现名人名言随机生成器
2017/02/10 Javascript
Angular 2父子组件数据传递之@Input和@Output详解 (上)
2017/07/05 Javascript
使用JQuery实现图片轮播效果的实例(推荐)
2017/10/24 jQuery
AngularJS实现图片上传和预览功能的方法分析
2017/11/08 Javascript
Vue程序调试的方法
2019/06/17 Javascript
浅谈vue3中effect与computed的亲密关系
2019/10/10 Javascript
vue 返回上一页,页面样式错乱的解决
2019/11/14 Javascript
python3+PyQt5 使用三种不同的简便项窗口部件显示数据的方法
2019/06/17 Python
python文字转语音的实例代码分析
2019/11/12 Python
在Python中等距取出一个数组其中n个数的实现方式
2019/11/27 Python
Python设计密码强度校验程序
2020/07/30 Python
应届生体育教师自荐信
2013/10/03 职场文书
2014年应届大学生毕业自我鉴定
2014/01/31 职场文书
中秋手机店促销方案
2014/06/16 职场文书
2014预备党员批评与自我批评思想汇报
2014/09/20 职场文书
六查六看自查报告
2014/10/14 职场文书
贷款担保书
2015/01/20 职场文书
趣味运动会赞词
2015/07/22 职场文书
2015年国庆节演讲稿范文
2015/07/30 职场文书
Django如何创作一个简单的最小程序
2021/05/12 Python