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中的__new__特殊方法
Jun 02 Python
python条件变量之生产者与消费者操作实例分析
Mar 22 Python
Python中正则表达式的用法总结
Feb 22 Python
python图像和办公文档处理总结
May 28 Python
python多线程http压力测试脚本
Jun 25 Python
Pandas之Fillna填充缺失数据的方法
Jun 25 Python
python运用sklearn实现KNN分类算法
Oct 16 Python
基于django 的orm中非主键自增的实现方式
May 18 Python
python定义具名元组实例操作
Feb 28 Python
python for循环赋值问题
Jun 03 Python
Django实现WebSocket在线聊天室功能(channels库)
Sep 25 Python
Python循环之while无限迭代
Apr 30 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
Codeigniter出现错误提示Error with CACHE directory的解决方案
2014/06/12 PHP
Android App中DrawerLayout抽屉效果的菜单编写实例
2016/03/21 PHP
php简单实现多维数组排序的方法
2016/09/30 PHP
javascript 添加和移除函数的通用方法
2009/10/20 Javascript
jQuery之ajax技术的详细介绍
2013/06/19 Javascript
js获取当前页面的url网址信息
2014/06/12 Javascript
JS实现鼠标滑过折叠与展开菜单效果代码
2015/09/06 Javascript
jfinal与bootstrap的登录跳转实战演习
2015/09/22 Javascript
浅析javascript中的事件代理
2015/11/06 Javascript
JavaScript判断微信浏览器实例代码
2016/06/13 Javascript
jquery注册文本框获取焦点清空,失去焦点赋值的简单实例
2016/09/08 Javascript
Angularjs中ng-repeat-start与ng-repeat-end的用法实例介绍
2016/12/31 Javascript
js 只比较时间大小的实例
2017/10/26 Javascript
微信小程序实现无限滚动列表
2020/05/29 Javascript
详解Vue-Router源码分析路由实现原理
2019/05/15 Javascript
vue elementui tree 任意级别拖拽功能代码
2020/08/31 Javascript
js实现随机点名功能
2020/12/23 Javascript
[01:03]PWL开团时刻DAY6——别打我
2020/11/05 DOTA
[01:11]steam端dota2实名认证操作流程视频
2021/03/11 DOTA
教你使用python实现微信每天给女朋友说晚安
2018/03/23 Python
解决matplotlib库show()方法不显示图片的问题
2018/05/24 Python
python中的不可变数据类型与可变数据类型详解
2018/09/16 Python
Python实现八皇后问题示例代码
2018/12/09 Python
Python队列RabbitMQ 使用方法实例记录
2019/08/05 Python
如何实现在jupyter notebook中播放视频(不停地展示图片)
2020/04/23 Python
Python常驻任务实现接收外界参数代码解析
2020/07/21 Python
Christys’ Hats官网:英国帽子制造商
2018/11/28 全球购物
美国购买体育、音乐会和剧院门票网站:SelectATicket
2019/09/08 全球购物
企业出纳岗位职责
2014/03/12 职场文书
预备党员的自我评价
2014/03/12 职场文书
音乐节策划方案
2014/06/09 职场文书
单位委托书
2014/10/15 职场文书
2014年教师个人工作总结
2014/11/10 职场文书
廉洁自律个人总结
2015/02/14 职场文书
七年级话题作文之执着
2019/11/19 职场文书
go语言map与string的相互转换的实现
2021/04/07 Golang