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函数中定义参数的四种方式
Nov 30 Python
使用C语言扩展Python程序的简单入门指引
Apr 14 Python
用Python实现命令行闹钟脚本实例
Sep 05 Python
用python制作游戏外挂
Jan 04 Python
python实现Decorator模式实例代码
Feb 09 Python
python批量替换多文件字符串问题详解
Apr 22 Python
pandas 对series和dataframe进行排序的实例
Jun 09 Python
python re库的正则表达式入门学习教程
Mar 08 Python
在PYQT5中QscrollArea(滚动条)的使用方法
Jun 14 Python
opencv 形态学变换(开运算,闭运算,梯度运算)
Jul 07 Python
通过代码实例了解Python异常本质
Sep 16 Python
Python 使用office365邮箱的示例
Oct 29 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
基于ThinkPHP+uploadify+upload+PHPExcel 无刷新导入数据
2015/09/23 PHP
php视频拍照上传头像功能实现代码分享
2015/10/08 PHP
Yii框架参数配置文件params用法实例分析
2019/09/11 PHP
通过Mootools 1.2来操纵HTML DOM元素
2009/09/15 Javascript
高性能Javascript笔记 数据的存储与访问性能优化
2012/08/02 Javascript
jQuery圆形统计图开发实例
2015/01/04 Javascript
优化RequireJS项目的相关技巧总结
2015/07/01 Javascript
jquery实现页面虚拟键盘特效
2015/08/08 Javascript
星期几的不同脚本写法(推荐)
2016/06/01 Javascript
前端框架学习总结之Angular、React与Vue的比较详解
2017/03/14 Javascript
vue 1.x 交互实现仿百度下拉列表示例
2017/10/21 Javascript
解析Vue2 dist 目录下各个文件的区别
2017/11/22 Javascript
VueJs组件之父子通讯的方式
2018/05/06 Javascript
js中Object.defineProperty()方法的不详解
2018/07/09 Javascript
vuejs点击class变化的实例
2018/09/05 Javascript
详解webpack引用jquery(第三方模块)的三种办法
2019/08/21 jQuery
ES6的异步操作之promise用法和async函数的具体使用
2019/12/06 Javascript
Python 元组(Tuple)操作详解
2014/03/11 Python
python判断一个集合是否包含了另外一个集合中所有项的方法
2015/06/30 Python
Python实现备份MySQL数据库的方法示例
2018/01/11 Python
pandas对指定列进行填充的方法
2018/04/11 Python
Tensorflow中的placeholder和feed_dict的使用
2018/07/09 Python
Python面向对象程序设计类的封装与继承用法示例
2019/04/12 Python
Django Admin中增加导出CSV功能过程解析
2019/09/04 Python
解决Keras 与 Tensorflow 版本之间的兼容性问题
2020/02/07 Python
什么是Deployment descriptors;都有什么类型的部署描述符
2015/07/28 面试题
写自荐信的七个技巧
2013/10/15 职场文书
市场营销专业毕业生自荐信
2013/11/02 职场文书
科技开发中心办公室主任岗位责任制
2014/02/10 职场文书
40岁生日感言
2014/02/15 职场文书
党员教师一句话承诺
2014/05/30 职场文书
九一八事变演讲稿范文
2014/09/14 职场文书
2015年仓管员工作总结
2015/04/21 职场文书
Python获取百度热搜的完整代码
2021/04/07 Python
简单聊一聊SQL注入及防止SQL注入
2022/03/23 MySQL
实战Python爬虫爬取酷我音乐
2022/04/11 Python