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学习笔记:字典的使用示例详解
Jun 13 Python
python删除过期文件的方法
May 29 Python
python3实现UDP协议的服务器和客户端
Jun 14 Python
利用python获取Ping结果示例代码
Jul 06 Python
python实现简易数码时钟
Feb 19 Python
Python read函数按字节(字符)读取文件的实现
Jul 03 Python
详解Python 4.0 预计推出的新功能
Jul 26 Python
python 实现视频 图像帧提取
Dec 10 Python
基于Django signals 信号作用及用法详解
Mar 28 Python
Jupyter notebook设置背景主题,字体大小及自动补全代码的操作
Apr 13 Python
Python爬虫基于lxml解决数据编码乱码问题
Jul 31 Python
Python 读写 Matlab Mat 格式数据的操作
May 19 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过滤危险html代码的函数
2008/07/22 PHP
PHP初学者常见问题集合 修正版(21问答)
2010/03/23 PHP
php文章内容分页并生成相应的htm静态页面代码
2010/06/07 PHP
smarty模板中使用get、post、request、cookies、session变量的方法
2014/04/24 PHP
为PHP5.4开启Zend OPCode缓存
2014/12/26 PHP
使用纯php代码实现页面伪静态的方法
2015/07/25 PHP
JQuery 浮动导航栏实现代码
2009/08/27 Javascript
IE6 弹出Iframe层中的文本框“经常”无法获得输入焦点
2009/12/27 Javascript
Array.prototype 的泛型应用分析
2010/04/30 Javascript
js控制表单操作的常用代码小结
2013/08/15 Javascript
javascript实现通过表格绘制颜色填充矩形的方法
2015/04/21 Javascript
简介JavaScript中substring()方法的使用
2015/06/06 Javascript
JavaScript快速切换繁体中文和简体中文的方法及网站支持简繁体切换的绝招
2016/03/07 Javascript
jquery模拟多级复选框效果的简单实例
2016/06/08 Javascript
JSP基于Bootstrap分页显示实例解析
2016/06/12 Javascript
快速掌握jQuery插件开发
2017/01/19 Javascript
微信小程序 获取session_key和openid的实例
2017/08/17 Javascript
vue项目部署到Apache服务器中遇到的问题解决
2018/08/24 Javascript
jQuery选择器之基本选择器用法实例分析
2019/02/19 jQuery
Vue 动态组件components和v-once指令的实现
2019/08/30 Javascript
python中星号变量的几种特殊用法
2016/09/07 Python
详解用TensorFlow实现逻辑回归算法
2018/05/02 Python
linux下python使用sendmail发送邮件
2018/05/22 Python
python三引号输出方法
2019/02/27 Python
django基于存储在前端的token用户认证解析
2019/08/06 Python
Python3内置函数chr和ord实现进制转换
2020/06/05 Python
详解Python中的文件操作
2021/01/14 Python
浅析数据存储的三种方式 cookie sessionstorage localstorage 的异同
2020/06/04 HTML / CSS
汉语专业应届生求职信
2013/10/01 职场文书
财产公证书样本
2014/04/04 职场文书
竞选大队干部演讲稿
2014/09/11 职场文书
运动会广播稿50字-100字
2014/10/11 职场文书
公司内部升职自荐信
2015/03/27 职场文书
中秋节主题班会
2015/08/14 职场文书
Python3 如何开启自带http服务
2021/05/18 Python
SQL Server中锁的用法
2022/05/20 SQL Server