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连接PostgreSQL数据库的方法
Nov 28 Python
pycharm安装图文教程
May 02 Python
浅谈Python peewee 使用经验
Oct 20 Python
Python排序搜索基本算法之选择排序实例分析
Dec 09 Python
python requests证书问题解决
Sep 05 Python
Python实现投影法分割图像示例(二)
Jan 17 Python
python神经网络编程实现手写数字识别
May 27 Python
python输入中文的实例方法
Sep 14 Python
Python通过递归函数输出嵌套列表元素
Oct 15 Python
利用Opencv实现图片的油画特效实例
Feb 28 Python
使用Python脚本对GiteePages进行一键部署的使用说明
May 27 Python
Python使用pandas导入csv文件内容的示例代码
Dec 24 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 flv视频时间获取函数
2010/06/29 PHP
PHP与MYSQL中UTF8 中文排序示例代码
2014/10/23 PHP
PHP 反射(Reflection)使用实例
2015/05/12 PHP
PHP中使用GD库绘制折线图 折线统计图的绘制方法
2015/11/09 PHP
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
2016/12/14 PHP
php删除二维数组中的重复值方法
2018/03/12 PHP
微信小程序 页面之间传参实例详解
2017/01/13 Javascript
Vue.Draggable实现拖拽效果
2020/07/29 Javascript
详谈表单格式化插件jquery.serializeJSON
2017/06/23 jQuery
JS实现前端缓存的方法
2017/09/21 Javascript
nodejs微信扫码支付功能实现
2018/02/17 NodeJs
vue 开发一个按钮组件的示例代码
2018/03/27 Javascript
js指定日期增加指定月份的实现方法
2018/12/19 Javascript
如何优雅地在vue中添加权限控制示例详解
2019/03/07 Javascript
seajs和requirejs模块化简单案例分析
2019/08/26 Javascript
纯异步nodejs文件夹(目录)复制功能
2019/09/03 NodeJs
vue2.x 通过后端接口代理,获取qq音乐api的数据示例
2019/10/30 Javascript
微信小程序上传帖子的实例代码(含有文字图片的微信验证)
2020/07/11 Javascript
[01:15:16]DOTA2-DPC中国联赛 正赛 Elephant vs Aster BO3 第一场 1月26日
2021/03/11 DOTA
Python验证文件是否可读写代码分享
2017/12/11 Python
Python内置模块ConfigParser实现配置读写功能的方法
2018/02/12 Python
python计算两个数的百分比方法
2018/06/29 Python
判断python字典中key是否存在的两种方法
2018/08/10 Python
使用Python做垃圾分类的原理及实例代码附源码
2019/07/02 Python
Python3 pandas 操作列表实例详解
2019/09/23 Python
python实现while循环打印星星的四种形状
2019/11/23 Python
Maxpeedingrods美国:高性能汽车零件
2020/02/14 全球购物
法学专业个人求职信
2013/09/26 职场文书
C++程序员求职信范文
2014/04/14 职场文书
求职信内容怎么写
2014/05/26 职场文书
我的中国梦演讲稿500字
2014/08/19 职场文书
2014物价局群众路线对照检查材料思想汇报
2014/09/21 职场文书
营销计划书范文
2015/01/17 职场文书
欧也妮葛朗台读书笔记
2015/06/30 职场文书
MySQL 慢查询日志深入理解
2021/04/22 MySQL
AJAX学习笔记
2021/05/18 Javascript