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虚拟环境virtualenv的使用教程
Oct 20 Python
Python3操作SQL Server数据库(实例讲解)
Oct 21 Python
python构建深度神经网络(续)
Mar 10 Python
详解Django之auth模块(用户认证)
Apr 17 Python
钉钉群自定义机器人消息Python封装的实例
Feb 20 Python
Python逐行读取文件中内容的简单方法
Feb 26 Python
python 矢量数据转栅格数据代码实例
Sep 30 Python
python中Ansible模块的Playbook的具体使用
May 28 Python
Tensorflow tensor 数学运算和逻辑运算方式
Jun 30 Python
Python实时监控网站浏览记录实现过程详解
Jul 14 Python
python利用opencv实现颜色检测
Feb 23 Python
OpenCV全景图像拼接的实现示例
Jun 05 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
20个PHP常用类库小结
2011/09/11 PHP
PHP中$_SERVER的详细参数与说明介绍
2013/10/26 PHP
php写入数据到CSV文件的方法
2015/03/14 PHP
PHP中把对象转换为关联数组代码分享
2015/04/09 PHP
PHP查找与搜索数组元素方法总结
2015/06/12 PHP
解决nginx不支持thinkphp中pathinfo的问题
2015/07/21 PHP
jquery validate.js表单验证的基本用法入门
2010/05/13 Javascript
javascript使用eval或者new Function进行语法检查
2010/10/16 Javascript
jquery click([data],fn)使用方法实例介绍
2013/07/08 Javascript
SuperSlide标签切换、焦点图多种组合插件
2015/03/14 Javascript
Bootstrap carousel轮转图的使用实例详解
2016/05/17 Javascript
Wireshark基本介绍和学习TCP三次握手
2016/08/15 Javascript
原生js实现网页顶部自动下拉/收缩广告效果
2017/01/20 Javascript
纯js实现动态时间显示
2020/09/07 Javascript
jQuery滑动效果实现方法分析
2018/09/05 jQuery
微信小程序云开发实现增删改查功能
2019/05/17 Javascript
详解javascript中var与ES6规范中let、const区别与用法
2020/01/11 Javascript
[43:58]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第二局
2016/02/27 DOTA
[51:07]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python中用Descriptor实现类级属性(Property)详解
2014/09/18 Python
详谈python read readline readlines的区别
2017/09/22 Python
python编程培训 python培训靠谱吗
2018/01/17 Python
python生成以及打开json、csv和txt文件的实例
2018/11/16 Python
python创建属于自己的单词词库 便于背单词
2019/07/30 Python
Python下利用BeautifulSoup解析HTML的实现
2020/01/17 Python
Django模板获取field的verbose_name实例
2020/05/19 Python
H5 canvas中width、height和style的宽高区别详解
2018/11/02 HTML / CSS
h5使用canvas画布实现手势解锁
2019/01/04 HTML / CSS
Wojas罗马尼亚网站:波兰皮鞋品牌
2018/11/01 全球购物
C#的几个面试问题
2016/05/22 面试题
夜大自我鉴定
2013/10/31 职场文书
分厂厂长岗位职责
2013/12/29 职场文书
优秀员工评语
2014/02/10 职场文书
大学生标准自荐书
2014/06/15 职场文书
党员国庆节演讲稿范文2014
2014/09/21 职场文书
2015年法院工作总结范文
2015/04/28 职场文书