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字符串中的单双引
Feb 16 Python
Python实现OpenCV的安装与使用示例
Mar 30 Python
bluepy 一款python封装的BLE利器简单介绍
Jun 25 Python
通过python实现弹窗广告拦截过程详解
Jul 10 Python
opencv python如何实现图像二值化
Feb 03 Python
tensorflow 分类损失函数使用小记
Feb 18 Python
Python虚拟环境的创建和使用详解
Sep 07 Python
Python识别验证码的实现示例
Sep 30 Python
利用Python pandas对Excel进行合并的方法示例
Nov 04 Python
python画图时设置分辨率和画布大小的实现(plt.figure())
Jan 08 Python
OpenCV-Python直方图均衡化实现图像去雾
Jun 07 Python
OpenCV-Python实现人脸美白算法的实例
Jun 11 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
PHP5.0正式发布 不完全兼容PHP4 新增多项功能
2006/10/09 PHP
从网上搜到的phpwind 0day的代码
2006/12/07 PHP
php htmlentities和htmlspecialchars 的区别
2008/08/18 PHP
PHP 远程文件管理,可以给表格排序,遍历目录,时间排序
2009/08/07 PHP
php中几种常见安全设置详解
2010/04/06 PHP
Zend的Registry机制的使用说明
2013/05/02 PHP
phpStudy2016 配置多个域名期间遇到的问题小结
2017/10/19 PHP
javascript 字符串连接的性能问题(多浏览器)
2008/11/18 Javascript
js 图片轮播(5张图片)
2008/12/30 Javascript
基于JQuery 的消息提示框效果代码
2011/07/31 Javascript
jquery中animate的stop()方法作用实例分析
2015/01/30 Javascript
让JavaScript中setTimeout支持链式操作的方法
2015/06/19 Javascript
javascript按钮禁用和启用的效果实例代码
2017/10/29 Javascript
JavaScript使用递归和循环实现阶乘的实例代码
2018/08/28 Javascript
[02:44]重置世界,颠覆未来——DOTA2 7.23版本震撼上线
2019/12/01 DOTA
详解Python的Django框架中Manager方法的使用
2015/07/21 Python
Python实现统计代码行的方法分析
2017/07/12 Python
python中Matplotlib实现绘制3D图的示例代码
2017/09/04 Python
Python 12306抢火车票脚本 Python京东抢手机脚本
2018/02/06 Python
Python利用公共键如何对字典列表进行排序详解
2018/05/19 Python
Python笔试面试题小结
2019/09/07 Python
python 使用shutil复制图片的例子
2019/12/13 Python
学习Python列表的基础知识汇总
2020/03/10 Python
python IDLE添加行号显示教程
2020/04/25 Python
Python selenium爬取微博数据代码实例
2020/05/22 Python
python安装和pycharm环境搭建设置方法
2020/05/27 Python
Django多数据库联用实现方法解析
2020/11/12 Python
亚瑟士美国官网:ASICS美国
2017/02/01 全球购物
美国体育用品商店:Academy Sports + Outdoors
2020/01/04 全球购物
编写一子程序,将一链表倒序,即使链表表尾变表头,表头变表尾
2016/02/10 面试题
初中英语课后反思
2014/04/25 职场文书
知识改变命运演讲稿
2014/05/21 职场文书
酒后驾车标语
2014/06/30 职场文书
2015个人年度工作总结范文
2015/05/28 职场文书
CSS filter 有什么神奇用途
2021/05/25 HTML / CSS
未发现nvidia显卡怎么办?Win11系统中未检测到nvidia显卡解决教程
2022/04/08 数码科技