python实现屏保程序(适用于背单词)
作者:Unicorn_wan 发布时间:2021-09-26 04:24:00
标签:python,屏保
今天要给大家分享的是一款自己写的屏保程序,大学大家最头疼的就是四六级的考试了,上次考试做阅读的时候,情不自禁的发呆,想着如果我能在电脑上写一个屏保程序,那么就可以天天记单词了!
开始
首先:我们使用的是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() # 实例化
运行结果:
可以看到,屏幕有透明的一层,这就是我们实例化的对象,它以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)
这里我们就讲完所有的步骤了,大致的运行结果如图:
需要注意的是:这里的单词是我在网上下的,如果下载好的六级单词,不是utf格式的需要使用记事本 -> 另存为 -> 选择格式。
总结
缺点:
1、这里面的代码可以简练很多的,最近没时间去看,只是粗略的完成了效果,希望大家多多指教。
2、可能对于cpu的消耗有点大,正如上所说,完全可以简化代码。
3、请大家多多指点。
大家可以在我的博客中下载源码和txt文件的压缩包
或者在github上查看代码:github
来源:https://blog.csdn.net/Unicorn_wan/article/details/85089237
0
投稿
猜你喜欢
- 最近因需要用python写一个微服务来用MQTT给硬件传输图片,其中python用的是flask框架,大概流程如下:协议为:需要将图片数据封
- 定义行为要定义行为,通过继承 yii\base\Behavior 或其子类来建立一个类。如:namespace app\components
- XMLHTTP对象及其方法------------------MSXML中提供了Microsoft.XMLHTTP对象,能够完成从数据包到R
- CSS网页布局开发中,会有很多小技巧,这里再扩展一下您所想要得到的知识,相信您会有很多收获!一、ul标签在Mozilla中默认是有paddi
- jieba 库是优秀的中文分词第三方库,中文文本需要通过分词获得单个的词语1、jieba库安装管理员身份运行cmd窗口输入命令:pip in
- 前言:本篇博客继续学习BeautifulSoup,目标站点选取“溧阳摄影圈”,这一地方论坛。目标站点
- 在上篇文章给大家介绍了yii2搭建完美后台并实现rbac权限控制实例教程中完美实现了yii2的后台搭建和rbac权限控制,如果你还没有实现,
- 本文实例讲述了正则表达式匹配ip地址实例。代码结构非常简单易懂。分享给大家供大家参考。主要实现代码如下:import rereip = re
- 1.汇率换算程序案例描述设计一个汇率换算器程序,其功能是将外币换算成人民币,或者相反案例分析分析问题:分析问题的计算部分;确定问题:将问题划
- 删除字符串中不需要的内容1、strip()方法strip:默认是去掉首尾的空白字符,但是也可以指定其他字符;lstrip:只去掉左边的;rs
- 实现CBOW模型类初始化:初始化方法的参数包括词汇个数 vocab_size 和中间层的神经元个数 hidden_size。首先生成两个权重
- 阅读上一篇:你是真正的用户体验设计者吗? Ⅱ系统和用户环境设计苹果系统成功在于系统架构。简化系统本身,设备只能变得更好、更小、性能更强大。在
- 本文主要是写了一个将指定文件夹下的指定文件类型移动到指定位置,具体内容如下# coding:utf-8import osimport shu
- 一、self的位置是出现在哪里?首先,self是在类的方法中的,在调用此方法时,不用给self赋值,Python会自动给他赋值,而且这个值就
- 本文实例讲述了Python实现曲线拟合操作。分享给大家供大家参考,具体如下:这两天学习了用python来拟合曲线。一、环境配置本人比较比较懒
- 一般情况下TextArea区输入的文字数量是没有限制的,但是我们可以通过javascript限制表单的文字字数。如下javascript代码
- 发现问题比解决问题重要,使用php集成开发环境Appserv网页会提示各种语法错误,但自己配置开发环境无法提示错误,特别当不是语法错误,比如
- 在IE6中背景属性加 a 与 a:hover 两者的伪类结合,在正常逻辑下为何不起作用?测试这问题存在IE6及以下浏览器,这问题我经常遇到在
- numpy的log和ln函数每次当我想用python实现ln函数时,下意识的就会输入错误的函数代码,这里特来记录一下关于numpy中的ln和
- 在写python程序时,对于可变对象和不可变对象这里理解不深,导致总会犯一些细节错误。以下面的程序举例:ab = {'a':