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实现删除文件与目录的方法
Nov 10 Python
深入解析Python中的urllib2模块
Nov 13 Python
Python 包含汉字的文件读写之每行末尾加上特定字符
Dec 12 Python
Django学习笔记之Class-Based-View
Feb 15 Python
Python使用修饰器执行函数的参数检查功能示例
Sep 26 Python
Python代码缩进和测试模块示例详解
May 07 Python
Python调用adb命令实现对多台设备同时进行reboot的方法
Oct 15 Python
python中将zip压缩包转为gz.tar的方法
Oct 18 Python
将python2.7添加进64位系统的注册表方式
Nov 20 Python
Python2.6版本pip安装步骤解析
Aug 17 Python
浅析python中的del用法
Sep 02 Python
Python非单向递归函数如何返回全部结果
Dec 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
在Windows版的PHP中使用ADO
2006/10/09 PHP
自动把纯文本转换成Web页面的php代码
2009/08/27 PHP
[原创]ThinkPHP中SHOW_RUN_TIME不能正常显示运行时间的解决方法
2015/10/10 PHP
php实现点击可刷新验证码
2015/11/07 PHP
PHP下载文件的函数实例代码
2016/05/18 PHP
PHP simplexml_load_string()函数实例讲解
2019/02/03 PHP
使用swoole 定时器变更超时未支付订单状态的解决方案
2019/07/24 PHP
jQuery html()等方法介绍
2009/11/18 Javascript
Nodejs学习笔记之Stream模块
2015/01/13 NodeJs
jQuery对指定元素中指定字符串进行替换的方法
2015/03/17 Javascript
JSON简介以及用法汇总
2016/02/21 Javascript
AngularJS基础 ng-submit 指令简单示例
2016/08/03 Javascript
javascript动画系列之模拟滚动条
2016/12/13 Javascript
微信页面倒计时代码(解决safari不兼容date的问题)
2016/12/13 Javascript
详解JavaScript常量定义
2017/01/03 Javascript
完美的js图片轮换效果
2017/02/05 Javascript
Vue中的基础过渡动画及实现原理解析
2018/12/04 Javascript
vue微信分享的实现(在当前页面分享其他页面)
2019/04/16 Javascript
Vue实现导航栏菜单
2020/08/19 Javascript
antd Select下拉菜单动态添加option里的内容操作
2020/11/02 Javascript
2款Python内存检测工具介绍和使用方法
2014/06/01 Python
Pycharm学习教程(7)虚拟机VM的配置教程
2017/05/04 Python
Python实现的单向循环链表功能示例
2017/11/10 Python
python爬虫系列Selenium定向爬取虎扑篮球图片详解
2017/11/15 Python
Django框架教程之正则表达式URL误区详解
2018/01/28 Python
Python实现简单的文本相似度分析操作详解
2018/06/16 Python
Python3.5实现的三级菜单功能示例
2019/03/25 Python
简单了解Python生成器是什么
2019/07/02 Python
python的pyecharts绘制各种图表详细(附代码)
2019/11/11 Python
《画杨桃》教学反思
2014/04/13 职场文书
温馨提示标语
2014/06/26 职场文书
酒店爱岗敬业演讲稿
2014/09/02 职场文书
2014年银行柜员工作总结
2014/11/12 职场文书
幼儿园安全教育月活动总结
2015/05/08 职场文书
导游词之西安骊山
2019/12/20 职场文书
OpenCV 图像梯度的实现方法
2021/07/25 Python