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 json模块使用实例
Apr 11 Python
用Python实现一个简单的多线程TCP服务器的教程
May 05 Python
Python编程实现双链表,栈,队列及二叉树的方法示例
Nov 01 Python
Python使用sort和class实现的多级排序功能示例
Aug 15 Python
python远程调用rpc模块xmlrpclib的方法
Jan 11 Python
利用Python正则表达式过滤敏感词的方法
Jan 21 Python
Python玩转Excel的读写改实例
Feb 22 Python
Python3几个常见问题的处理方法
Feb 26 Python
Python Django框架实现应用添加logging日志操作示例
May 17 Python
python区块及区块链的开发详解
Jul 03 Python
Python 继承,重写,super()调用父类方法操作示例
Sep 29 Python
总结几个非常实用的Python库
Jun 26 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函数的实现原理及性能分析(一)
2015/05/13 PHP
PHP 判断字符串是中文还是英文, 或者是中英混合
2021/03/09 PHP
脚本收藏iframe
2006/07/21 Javascript
Autocomplete Textbox Example javascript实现自动完成成功
2007/08/17 Javascript
extjs 学习笔记(一) 一些基础知识
2009/10/13 Javascript
js文件中调用js的实现方法小结
2009/10/23 Javascript
JavaScript中“+”的陷阱深刻理解
2012/12/04 Javascript
JavaScript 创建运动框架的实现代码
2013/05/08 Javascript
js onload处理html页面加载之后的事件
2013/10/30 Javascript
js的flv视频播放器插件使用方法
2015/06/23 Javascript
浅谈JavaScript中的作用域和闭包问题
2015/07/07 Javascript
jquery自定义插件开发之window的实现过程
2016/05/06 Javascript
AngularJS监听路由的变化示例代码
2016/09/23 Javascript
jQuery实现鼠标滑过预览图片大图效果的方法
2017/04/26 jQuery
基于vue-cli创建的项目的目录结构及说明介绍
2017/11/23 Javascript
Makefile/cmake/node-gyp中区分判断不同平台的方法
2018/12/18 Javascript
node.js实现微信开发之获取用户授权
2019/03/18 Javascript
pygame学习笔记(4):声音控制
2015/04/15 Python
动态规划之矩阵连乘问题Python实现方法
2017/11/27 Python
Python实现的寻找前5个默尼森数算法示例
2018/03/25 Python
python实现定时发送qq消息
2019/01/18 Python
对python中矩阵相加函数sum()的使用详解
2019/01/28 Python
关于keras.layers.Conv1D的kernel_size参数使用介绍
2020/05/22 Python
Tensorflow中k.gradients()和tf.stop_gradient()用法说明
2020/06/10 Python
美国最大的万圣节服装网站:HalloweenCostumes.com
2017/10/12 全球购物
工程管理造价应届生求职信
2013/11/13 职场文书
小学生班会演讲稿
2014/01/09 职场文书
初中班主任评语大全
2014/04/24 职场文书
设计顾问服务计划书
2014/05/04 职场文书
计算机网络专业求职信
2014/06/05 职场文书
学校消防安全责任书
2014/07/23 职场文书
学习教师敬业奉献模范事迹材料思想汇报
2014/09/19 职场文书
煤矿隐患排查制度
2015/08/05 职场文书
Nginx配置Https安全认证的实现
2021/05/26 Servers
Python图片验证码降噪和8邻域降噪
2021/08/30 Python
Python各协议下socket黏包问题原理
2022/04/12 Python