python实现屏保程序(适用于背单词)


Posted in Python onJuly 30, 2019

今天要给大家分享的是一款自己写的屏保程序,大学大家最头疼的就是四六级的考试了,上次考试做阅读的时候,情不自禁的发呆,想着如果我能在电脑上写一个屏保程序,那么就可以天天记单词了!

开始

首先:我们使用的是python自带的GUI模块,大部分操作网上都可以查到,对于写一些小的交互程序是完全够了。首先我们来定义一个类,这个类可以实列出一个屏幕显示对象,我把它称为Screensaver()。

from tkinter import *
import tkinter.font as tkFont # 导入了一个字体

class Screensaver():
 txt_1 = [] # 用来储存实例对象
 i = 1 # 用于后期判断是否更新单词表
 def __init__(self):
 self.win = Tk() # 基于tkiner中的Tk()方法实例个对象
 self.ft = tkFont.Font(family='Fixdsys', size=30, weight=tkFont.BOLD) # 修改字体的方法
 self.width = self.win.winfo_screenwidth() # 获取屏幕大小
 self.height= self.win.winfo_screenheight()
 
 self.win.overrideredirect(1) # 全屏设置
 self.win.attributes('-alpha',0.3) # 以参数alpha的方式设置透明度


 # 绑定事件
 self.win.bind('<Any-Button>',self.exit_screensaver) # 单击鼠标即弹出
 self.canvas=Canvas(self.win,width=self.width,height=self.height,bg='#00FFFF')
 self.canvas.pack()

 self.win.mainloop()

 def exit_screensaver(self,event): # 这里必须要个参数event
 self.win.destroy()

Screensaver() # 实例化

运行结果:

python实现屏保程序(适用于背单词)

可以看到,屏幕有透明的一层,这就是我们实例化的对象,它以cavans(画布的形式),类似于photoshop里面的画层一样,可以在上面不断叠加画层。

接下来,我们要创建文字类:Text_screen(),用它来创建文字,并使其能移动文字和创建文字。

class Text_screen():
 list_box = [i for i in range(20,1080,50)] # 22 个个数,分别代表屏幕的高度位置
 i = 0 # 用来在高度上取值
 def __init__(self,canvas,ft,width,height,text_1):
 self.canvas = canvas
 self.ft = ft
 self.text_1 = text_1
 self.x_pos = width
 self.x_move = -1
 self.create_text()

 def create_text(self): # 创建方法
 self.x1 = self.x_pos-100
 self.item = self.canvas.create_text(self.x1,self.list_box[Text_screen.i],text=self.text_1,font=self.ft,fill='red',anchor=NW)
 if Text_screen.i == len(Text_screen.list_box)-1:
  Text_screen.i = 0
 else: Text_screen.i += 1

 def move_text(self): # 移动文字
 self.canvas.move(self.item, self.x_move,0)
 self.x1 += self.x_move

最后

我们来整合着两个类:
在Screensaver()类中添加三个函数:

def birth_list(self): #生成文字,
 i = randint(0,2064)
 self.str_text = linecache.getlines('six.txt')[i:i+21] # 这里需要导入模块:linecache,并且这里的文件是单词文本,要注意它的编码格式。
 if self.i == 1:
  for my_text in self.str_text:
  txt = Text_screen(self.canvas,self.ft,self.width,self.height,my_text)
  self.list_.append(txt)
 else: pass
 def exit_screensaver(self,event): # 这里必须要个参数event
 self.win.destroy()

 def run_screensaver(self): # 循环体 ,不断更新屏幕内容
 if self.i == 1:
  for emumt in self.list_:
  emumt.move_text()
  if emumt.x1<= -30:
   emumt
   self.i = -1
   self.delect()
   self.list_ =[]
   self.birth_list()
   for my_text in self.str_text:
   txt = Text_screen(self.canvas,self.ft,self.width,self.height,my_text)
   self.list_.append(txt)
   break
 else:
  self.i *= -1
 self.canvas.after(1,self.run_screensaver) # 第一个参数是间隔事件吧?第二个是调用函数

 def delect(self):# 不断的删除屏幕对象
 for em in self.list_:
  self.canvas.delete(em.item)

这里我们就讲完所有的步骤了,大致的运行结果如图:

python实现屏保程序(适用于背单词)

需要注意的是:这里的单词是我在网上下的,如果下载好的六级单词,不是utf格式的需要使用记事本 -> 另存为 -> 选择格式。

总结

缺点:

1、这里面的代码可以简练很多的,最近没时间去看,只是粗略的完成了效果,希望大家多多指教。
2、可能对于cpu的消耗有点大,正如上所说,完全可以简化代码。
3、请大家多多指点。

大家可以在我的博客中下载源码和txt文件的压缩包
或者在github上查看代码:github

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用grappelli为django admin后台添加模板
Nov 18 Python
python导入csv文件出现SyntaxError问题分析
Dec 15 Python
python爬虫实例详解
Jun 19 Python
python配置grpc环境
Jan 01 Python
详解Selenium+PhantomJS+python简单实现爬虫的功能
Jul 14 Python
使用OpenCV实现仿射变换—平移功能
Aug 29 Python
使用Python paramiko模块利用多线程实现ssh并发执行操作
Dec 05 Python
python装饰器相当于函数的调用方式
Dec 27 Python
在Python中利用pickle保存变量的实例
Dec 30 Python
python爬虫使用requests发送post请求示例详解
Aug 05 Python
无惧面试,带你搞懂python 装饰器
Aug 17 Python
python套接字socket通信
Apr 01 Python
python实现各种插值法(数值分析)
Jul 30 #Python
Django 通过JS实现ajax过程详解
Jul 30 #Python
django 微信网页授权认证api的步骤详解
Jul 30 #Python
Python Pandas 如何shuffle(打乱)数据
Jul 30 #Python
python tkinter实现屏保程序
Jul 30 #Python
python pandas 时间日期的处理实现
Jul 30 #Python
Django 反向生成url实例详解
Jul 30 #Python
You might like
php include的妙用,实现路径加密
2008/07/29 PHP
第4章 数据处理-php字符串的处理-郑阿奇(续)
2011/07/04 PHP
php学习笔记(三)操作符与控制结构
2011/08/06 PHP
php实现的农历算法实例
2015/08/11 PHP
用tip解决Ext列宽度不够的问题
2008/12/13 Javascript
JQuery 小练习(实例代码)
2009/08/07 Javascript
jquery多浏览器捕捉回车事件代码
2010/06/22 Javascript
JQuery live函数
2010/12/24 Javascript
JS数学函数Exp使用说明
2012/08/09 Javascript
JavaScript Array对象扩展indexOf()方法
2014/05/09 Javascript
node.js中的http.request.end方法使用说明
2014/12/10 Javascript
javascript动态创建及删除元素的方法
2014/12/22 Javascript
JS实现课堂随机点名和顺序点名
2017/03/09 Javascript
AngularJS中$http的交互问题
2017/03/29 Javascript
Bootstrap 模态框多次显示后台提交多次BUG的解决方法
2017/12/26 Javascript
Angular中的ng-template及angular 使用ngTemplateOutlet 指令的方法
2018/08/08 Javascript
利用Vue-draggable组件实现Vue项目中表格内容的拖拽排序
2019/06/07 Javascript
js实现简单掷骰子效果
2019/10/24 Javascript
彻底搞懂并解决vue-cli4中图片显示的问题实现
2020/08/31 Javascript
Vant 在vue-cli 4.x中按需加载操作
2020/11/05 Javascript
实例讲解Python中global语句下全局变量的值的修改
2016/06/16 Python
python调用OpenCV实现人脸识别功能
2018/05/25 Python
python hbase读取数据发送kafka的方法
2018/12/27 Python
Python常用模块sys,os,time,random功能与用法实例分析
2020/01/07 Python
python中scrapy处理项目数据的实例分析
2020/11/22 Python
Python基于unittest实现测试用例执行
2020/11/25 Python
html5 迷宫游戏(碰撞检测)实例一
2013/07/25 HTML / CSS
TripAdvisor斯洛伐克:阅读评论、比较价格和酒店预订
2018/04/25 全球购物
G-Form护具官方网站:美国运动保护装备
2019/09/04 全球购物
高中军训广播稿
2014/01/14 职场文书
商场活动策划方案
2014/01/24 职场文书
剪彩仪式主持词
2014/03/19 职场文书
体育教师求职信
2014/05/24 职场文书
外出考察学习心得体会
2016/01/18 职场文书
初二物理教学反思
2016/02/19 职场文书
Python激活Anaconda环境变量的详细步骤
2021/06/08 Python