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 15 Python
pandas 取出表中一列数据所有的值并转换为array类型的方法
Apr 11 Python
python中对_init_的理解及实例解析
Oct 11 Python
基于Python实现签到脚本过程解析
Oct 25 Python
python 实现目录复制的三种小结
Dec 04 Python
python实现拼接图片
Mar 23 Python
在服务器上安装python3.8.2环境的教程详解
Apr 26 Python
Python基于正则表达式实现计算器功能
Jul 13 Python
vscode配置anaconda3的方法步骤
Aug 08 Python
Python读取xlsx数据生成图标代码实例
Aug 12 Python
windows+vscode安装paddleOCR运行环境的步骤
Nov 11 Python
详解非极大值抑制算法之Python实现
Jun 28 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
教你如何快捷的使用cmd访问mysql小技巧
2014/05/26 PHP
windows7下安装php的php-ssh2扩展教程
2014/07/04 PHP
PHP使用strtotime计算两个给定日期之间天数的方法
2015/03/18 PHP
PHP编程实现阳历转换为阴历的方法实例
2017/08/08 PHP
Thinkphp5行为使用方法汇总
2017/12/21 PHP
Cookie 注入是怎样产生的
2009/04/08 Javascript
Chrome扩展页面动态绑定JS事件提示错误
2014/02/11 Javascript
JQuery1.8 判断元素是否绑定事件的方法
2014/07/10 Javascript
jQuery插件zepto.js简单实现tab切换
2015/06/16 Javascript
AngularJs定制样式插入到ueditor中的问题小结
2016/08/01 Javascript
mpvue+vuex搭建小程序详细教程(完整步骤)
2018/09/30 Javascript
express+vue+mongodb+session 实现注册登录功能
2018/12/06 Javascript
通过JS运行机制的角度说说作用域
2019/03/12 Javascript
微信小游戏之使用three.js 绘制一个旋转的三角形
2019/06/10 Javascript
layerui代码控制tab选项卡,添加,关闭的实例
2019/09/04 Javascript
vuex存取值和映射函数使用说明
2020/07/24 Javascript
[01:48]DOTA2 2015国际邀请赛中国区预选赛第二日战报
2015/05/27 DOTA
python提取字典key列表的方法
2015/07/11 Python
Python装饰器基础详解
2016/03/09 Python
Python基于辗转相除法求解最大公约数的方法示例
2018/04/04 Python
Flask web开发处理POST请求实现(登录案例)
2018/07/26 Python
PyQt4 treewidget 选择改变颜色,并设置可编辑的方法
2019/06/17 Python
Django单元测试中Fixtures用法详解
2020/02/25 Python
python中数据库like模糊查询方式
2020/03/02 Python
TensorFlow打印输出tensor的值
2020/04/19 Python
python 代码运行时间获取方式详解
2020/09/18 Python
PyCharm最新激活码(2020/10/27全网最新)
2020/10/27 Python
python pygame 愤怒的小鸟游戏示例代码
2021/02/25 Python
html5 viewport使用方法示例详解
2013/12/02 HTML / CSS
HTML5全屏(Fullscreen)API详细介绍
2015/04/24 HTML / CSS
山海经纬软件测试笔试题和面试题
2013/04/02 面试题
一个大学生十年的职业规划
2014/01/17 职场文书
2014年两会学习心得体会
2014/03/10 职场文书
本科毕业生求职自荐信
2014/04/09 职场文书
导游词之四川熊猫基地
2020/01/13 职场文书
Python中的程序流程控制语句
2022/02/24 Python