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 subprocess 杀掉全部派生的子进程方法
Jan 16 Python
浅析Git版本控制器使用
Dec 10 Python
python 遍历目录(包括子目录)下所有文件的实例
Jul 11 Python
计算机二级python学习教程(2) python语言基本语法元素
May 16 Python
PyCharm刷新项目(文件)目录的实现
Feb 14 Python
Python xlrd excel文件操作代码实例
Mar 10 Python
解决Python中报错TypeError: must be str, not bytes问题
Apr 07 Python
Python3.7在anaconda里面使用IDLE编译器的步骤详解
Apr 29 Python
keras.layer.input()用法说明
Jun 16 Python
基于opencv的selenium滑动验证码的实现
Jul 24 Python
pytorch下的unsqueeze和squeeze的用法说明
Feb 06 Python
Python还能这么玩之用Python做个小游戏的外挂
Jun 04 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学习笔记 用户注册模块用户类以及验证码类
2011/09/20 PHP
浅析PHP原理之变量(Variables inside PHP)
2013/08/09 PHP
海量经典的jQuery插件集合
2010/01/12 Javascript
javascript的数据类型、字面量、变量介绍
2012/05/23 Javascript
一行代码告别document.getElementById
2012/06/01 Javascript
javascript限制文本框只允许输入数字(曾经与现在的方法对比)
2013/01/18 Javascript
在jquery中的ajax方法怎样通过JSONP进行远程调用
2014/04/04 Javascript
jQuery中siblings()方法用法实例
2015/01/08 Javascript
jQuery源码分析之jQuery.fn.each与jQuery.each用法
2015/01/23 Javascript
基于MVC4+EasyUI的Web开发框架形成之旅之界面控件的使用
2015/12/16 Javascript
使用angularjs创建简单表格
2016/01/21 Javascript
Angular中$compile源码分析
2016/01/28 Javascript
JS实现图片的不间断连续滚动的简单实例
2016/06/03 Javascript
Vue数据驱动模拟实现2
2017/01/11 Javascript
Angular2+如何去除url中的#号详解
2017/12/20 Javascript
react中fetch之cors跨域请求的实现方法
2018/03/14 Javascript
vue-cli项目中使用Mockjs详解
2018/05/14 Javascript
使用 Element UI Table 的 slot-scope方法
2019/10/10 Javascript
JS实现炫酷轮播图
2020/11/15 Javascript
Python采用socket模拟TCP通讯的实现方法
2014/11/19 Python
Python EOL while scanning string literal问题解决方法
2020/09/18 Python
Python自定义函数定义,参数,调用代码解析
2017/12/27 Python
Python语言描述连续子数组的最大和
2018/01/04 Python
python实现字符串和字典的转换
2018/09/29 Python
关于Keras Dense层整理
2020/05/21 Python
中国医药集团国药在线:国药网
2017/02/06 全球购物
Missguided美国官网:英国时尚品牌
2018/01/18 全球购物
一套Java笔试题
2016/08/20 面试题
英语专业个人求职自荐信
2013/09/21 职场文书
英文导游欢迎词
2014/01/11 职场文书
2014年公务员思想汇报范文:全心全意为人民服务
2014/03/06 职场文书
酒店总经理岗位职责范本
2014/08/08 职场文书
党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
2015年基层党支部工作总结
2015/05/21 职场文书
奠基仪式致辞
2015/07/30 职场文书
yolov5返回坐标的方法实例
2022/03/17 Python