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 相关文章推荐
Python安装第三方库的3种方法
Jun 21 Python
Python中的字符串替换操作示例
Jun 27 Python
详解Python list 与 NumPy.ndarry 切片之间的对比
Jul 24 Python
python中reduce()函数的使用方法示例
Sep 29 Python
python 借助numpy保存数据为csv格式的实现方法
Jul 04 Python
python消除序列的重复值并保持顺序不变的实例
Nov 08 Python
python多任务之协程的使用详解
Aug 26 Python
Python如何基于selenium实现自动登录博客园
Dec 16 Python
Python使用urllib模块对URL网址中的中文编码与解码实例详解
Feb 18 Python
keras在构建LSTM模型时对变长序列的处理操作
Jun 29 Python
Python分析最近大火的网剧《隐秘的角落》
Jul 02 Python
python超详细实现完整学生成绩管理系统
Mar 17 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
图形数字验证代码
2006/10/09 PHP
8个出色的WordPress SEO插件收集
2011/02/26 PHP
PHP四舍五入精确小数位及取整
2014/01/14 PHP
PHP如何通过AJAX方式实现登录功能
2015/11/23 PHP
使用正则去除php代码中的注释方法
2016/11/03 PHP
Laravel框架模板继承操作示例
2018/06/11 PHP
ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解
2019/04/02 PHP
PHP实现基本留言板功能原理与步骤详解
2020/03/26 PHP
jquery 表单验证之通过 class验证表单不为空
2015/11/02 Javascript
jquery使用on绑定a标签无效 只能用live解决
2016/06/02 Javascript
jQuery中text() val()和html()的区别实例详解
2016/06/28 Javascript
几句话带你理解JS中的this、闭包、原型链
2016/09/26 Javascript
Mac下通过brew安装指定版本的nodejs教程
2018/05/17 NodeJs
Angular4 反向代理Details实践
2018/05/30 Javascript
Vue.js样式动态绑定实现小结
2019/01/24 Javascript
如何使用50行javaScript代码实现简单版的call,apply,bind
2019/08/14 Javascript
JavaScript oncopy事件用法实例解析
2020/05/13 Javascript
Python global全局变量函数详解
2018/09/18 Python
对Django中的权限和分组管理实例讲解
2019/08/16 Python
Python进阶之使用selenium爬取淘宝商品信息功能示例
2019/09/16 Python
Pyecharts地图显示不完成问题解决方案
2020/05/11 Python
python3.7调试的实例方法
2020/07/21 Python
Python SQLAlchemy库的使用方法
2020/10/13 Python
Python高并发和多线程有什么关系
2020/11/14 Python
windows系统Tensorflow2.x简单安装记录(图文)
2021/01/18 Python
2014年计算机专业个人自我评价
2014/01/19 职场文书
购房协议书
2014/04/11 职场文书
平安校园建设方案
2014/05/02 职场文书
财务管理专业毕业生求职信
2014/06/02 职场文书
交通事故赔偿协议书怎么写
2014/10/04 职场文书
师德师风自查材料
2014/10/14 职场文书
学校会议通知范文
2015/04/15 职场文书
2015社区个人工作总结范文
2015/05/13 职场文书
推广普通话宣传标语口号
2015/12/26 职场文书
员工安全责任协议书
2016/03/22 职场文书
python opencv检测直线 cv2.HoughLinesP的实现
2021/06/18 Python