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发腾讯微博代码分享
Jan 10 Python
Python中type的构造函数参数含义说明
Jun 21 Python
python实现汉诺塔方法汇总
Jul 25 Python
tensorflow 使用flags定义命令行参数的方法
Apr 23 Python
Python设计模式之职责链模式原理与用法实例分析
Jan 11 Python
安装完Python包然后找不到模块的解决步骤
Feb 13 Python
python词云库wordCloud使用方法详解(解决中文乱码)
Feb 17 Python
浅谈图像处理中掩膜(mask)的意义
Feb 19 Python
Python bytes string相互转换过程解析
Mar 05 Python
查看jupyter notebook每个单元格运行时间实例
Apr 22 Python
利用python控制Autocad:pyautocad方式
Jun 01 Python
pytorch 实现多个Dataloader同时训练
May 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
php文本转图片自动换行的方法
2013/03/13 PHP
基于JQuery实现相同内容合并单元格的代码
2011/01/12 Javascript
表单JS弹出填写提示效果代码
2011/04/16 Javascript
js特效,页面下雪的小例子
2013/06/17 Javascript
一个简单的JS时间控件示例代码(JS时分秒时间控件)
2013/11/22 Javascript
JavaScript实现多个重叠层点击切换效果的方法
2015/04/24 Javascript
浅谈javascript构造函数与实例化对象
2015/06/22 Javascript
javascript编写贪吃蛇游戏
2015/07/07 Javascript
jQuery zclip插件实现跨浏览器复制功能
2015/11/02 Javascript
JavaScript实现汉字转换为拼音的库文件示例
2016/12/22 Javascript
jQuery实现动态给table赋值的方法示例
2017/07/04 jQuery
JavaScript中set与get方法用法示例
2018/08/15 Javascript
vue实现移动端拖动排序
2020/08/21 Javascript
Python实现比较两个文件夹中代码变化的方法
2015/07/10 Python
Python使用PDFMiner解析PDF代码实例
2017/03/27 Python
python使用matplotlib画饼状图
2018/09/25 Python
Python3.5装饰器原理及应用实例详解
2019/04/30 Python
numpy ndarray 取出满足特定条件的某些行实例
2019/12/05 Python
Python 格式化输出_String Formatting_控制小数点位数的实例详解
2020/02/04 Python
在脚本中单独使用django的ORM模型详解
2020/04/01 Python
python小白切忌乱用表达式
2020/05/29 Python
Python爬虫实例——scrapy框架爬取拉勾网招聘信息
2020/07/14 Python
python跨文件使用全局变量的实现
2020/11/17 Python
欧缇丽美国官网:Caudalie美国
2016/12/31 全球购物
捷克多品牌在线时尚商店:ANSWEAR.cz
2020/10/03 全球购物
Java平台和其他软件平台有什么不同
2015/06/05 面试题
软件测试面试题
2015/10/21 面试题
中英双版中文教师求职信
2013/10/27 职场文书
办公室主任职责范本
2014/03/07 职场文书
幼儿园的门卫岗位职责
2014/04/10 职场文书
食品安全工作方案
2014/05/07 职场文书
过程装备与控制工程专业求职信
2014/07/02 职场文书
销售员态度差检讨书
2014/10/26 职场文书
七年级上册语文教学计划
2015/01/22 职场文书
openstack中的rpc远程调用的方法
2021/07/09 Python
Python find()、rfind()方法及作用
2022/12/24 Python