python實現(xiàn)屏保程序(適用于背單詞)
今天要給大家分享的是一款自己寫的屏保程序,大學(xué)大家最頭疼的就是四六級的考試了,上次考試做閱讀的時候,情不自禁的發(fā)呆,想著如果我能在電腦上寫一個屏保程序,那么就可以天天記單詞了!
開始
首先:我們使用的是python自帶的GUI模塊,大部分操作網(wǎng)上都可以查到,對于寫一些小的交互程序是完全夠了。首先我們來定義一個類,這個類可以實列出一個屏幕顯示對象,我把它稱為Screensaver()。
from tkinter import * import tkinter.font as tkFont # 導(dǎo)入了一個字體 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) # 全屏設(shè)置 self.win.attributes('-alpha',0.3) # 以參數(shù)alpha的方式設(shè)置透明度 # 綁定事件 self.win.bind('<Any-Button>',self.exit_screensaver) # 單擊鼠標(biāo)即彈出 self.canvas=Canvas(self.win,width=self.width,height=self.height,bg='#00FFFF') self.canvas.pack() self.win.mainloop() def exit_screensaver(self,event): # 這里必須要個參數(shù)event self.win.destroy() Screensaver() # 實例化
運行結(jié)果:
可以看到,屏幕有透明的一層,這就是我們實例化的對象,它以cavans(畫布的形式),類似于photoshop里面的畫層一樣,可以在上面不斷疊加畫層。
接下來,我們要創(chuàng)建文字類:Text_screen(),用它來創(chuàng)建文字,并使其能移動文字和創(chuàng)建文字。
class Text_screen(): list_box = [i for i in range(20,1080,50)] # 22 個個數(shù),分別代表屏幕的高度位置 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): # 創(chuàng)建方法 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()類中添加三個函數(shù):
def birth_list(self): #生成文字, i = randint(0,2064) self.str_text = linecache.getlines('six.txt')[i:i+21] # 這里需要導(dǎo)入模塊: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): # 這里必須要個參數(shù)event self.win.destroy() def run_screensaver(self): # 循環(huán)體 ,不斷更新屏幕內(nèi)容 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) # 第一個參數(shù)是間隔事件吧?第二個是調(diào)用函數(shù) def delect(self):# 不斷的刪除屏幕對象 for em in self.list_: self.canvas.delete(em.item)
這里我們就講完所有的步驟了,大致的運行結(jié)果如圖:
需要注意的是:這里的單詞是我在網(wǎng)上下的,如果下載好的六級單詞,不是utf格式的需要使用記事本 -> 另存為 -> 選擇格式。
總結(jié)
缺點:
1、這里面的代碼可以簡練很多的,最近沒時間去看,只是粗略的完成了效果,希望大家多多指教。
2、可能對于cpu的消耗有點大,正如上所說,完全可以簡化代碼。
3、請大家多多指點。
大家可以在我的博客中下載源碼和txt文件的壓縮包
或者在github上查看代碼:github
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python+Django實現(xiàn)接口測試工具的示例代嗎
本文主要介紹了Python+Django實現(xiàn)接口測試工具,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07

Python基于列表list實現(xiàn)的CRUD操作功能示例

Python中NameError: name ‘Image‘ is not&nb

Python切換pip源兩種方法(解決pip?install慢)

對Tensorflow中權(quán)值和feature map的可視化詳解

python執(zhí)行shell并獲取結(jié)果的詳細(xì)示例