最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python實(shí)現(xiàn)屏保程序(適用于背單詞)

 更新時(shí)間:2019年07月30日 09:57:09   作者:Unicorn_wan  
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)屏保程序,適用于背單詞,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

今天要給大家分享的是一款自己寫(xiě)的屏保程序,大學(xué)大家最頭疼的就是四六級(jí)的考試了,上次考試做閱讀的時(shí)候,情不自禁的發(fā)呆,想著如果我能在電腦上寫(xiě)一個(gè)屏保程序,那么就可以天天記單詞了!

開(kāi)始

首先:我們使用的是python自帶的GUI模塊,大部分操作網(wǎng)上都可以查到,對(duì)于寫(xiě)一些小的交互程序是完全夠了。首先我們來(lái)定義一個(gè)類,這個(gè)類可以實(shí)列出一個(gè)屏幕顯示對(duì)象,我把它稱為Screensaver()。

from tkinter import *
import tkinter.font as tkFont # 導(dǎo)入了一個(gè)字體

class Screensaver():
 txt_1 = [] # 用來(lái)儲(chǔ)存實(shí)例對(duì)象
 i = 1 # 用于后期判斷是否更新單詞表
 def __init__(self):
 self.win = Tk() # 基于tkiner中的Tk()方法實(shí)例個(gè)對(duì)象
 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): # 這里必須要個(gè)參數(shù)event
 self.win.destroy()

Screensaver() # 實(shí)例化

運(yùn)行結(jié)果:

可以看到,屏幕有透明的一層,這就是我們實(shí)例化的對(duì)象,它以cavans(畫(huà)布的形式),類似于photoshop里面的畫(huà)層一樣,可以在上面不斷疊加畫(huà)層。

接下來(lái),我們要?jiǎng)?chuàng)建文字類:Text_screen(),用它來(lái)創(chuàng)建文字,并使其能移動(dòng)文字和創(chuàng)建文字。

class Text_screen():
 list_box = [i for i in range(20,1080,50)] # 22 個(gè)個(gè)數(shù),分別代表屏幕的高度位置
 i = 0 # 用來(lái)在高度上取值
 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): # 移動(dòng)文字
 self.canvas.move(self.item, self.x_move,0)
 self.x1 += self.x_move

最后

我們來(lái)整合著兩個(gè)類:
在Screensaver()類中添加三個(gè)函數(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): # 這里必須要個(gè)參數(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) # 第一個(gè)參數(shù)是間隔事件吧?第二個(gè)是調(diào)用函數(shù)

 def delect(self):# 不斷的刪除屏幕對(duì)象
 for em in self.list_:
  self.canvas.delete(em.item)

這里我們就講完所有的步驟了,大致的運(yùn)行結(jié)果如圖:

需要注意的是:這里的單詞是我在網(wǎng)上下的,如果下載好的六級(jí)單詞,不是utf格式的需要使用記事本 -> 另存為 -> 選擇格式。

總結(jié)

缺點(diǎn):

1、這里面的代碼可以簡(jiǎn)練很多的,最近沒(méi)時(shí)間去看,只是粗略的完成了效果,希望大家多多指教。
2、可能對(duì)于cpu的消耗有點(diǎn)大,正如上所說(shuō),完全可以簡(jiǎn)化代碼。
3、請(qǐng)大家多多指點(diǎn)。

大家可以在我的博客中下載源碼和txt文件的壓縮包
或者在github上查看代碼:github

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python繪制熱力圖heatmap

    python繪制熱力圖heatmap

    這篇文章主要為大家詳細(xì)介紹了python繪制熱力圖heatmap,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • Keras實(shí)現(xiàn)DenseNet結(jié)構(gòu)操作

    Keras實(shí)現(xiàn)DenseNet結(jié)構(gòu)操作

    這篇文章主要介紹了Keras實(shí)現(xiàn)DenseNet結(jié)構(gòu)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-07-07
  • python如何求100以內(nèi)的素?cái)?shù)

    python如何求100以內(nèi)的素?cái)?shù)

    在本篇文章里小編給大家分享的是關(guān)于python如何求100以內(nèi)的素?cái)?shù)的方法實(shí)例,需要的朋友們可以學(xué)習(xí)下。
    2020-05-05
  • Python獲取指定日期是"星期幾"的6種方法

    Python獲取指定日期是"星期幾"的6種方法

    在Python進(jìn)行數(shù)據(jù)分析時(shí),按照日期進(jìn)行分組匯總也是被需要的,比如會(huì)找到銷量的周期性規(guī)律。本文將以2022-02-22為例,演示Python獲取指定日期是“星期幾”的6種方法,需要的可以參考一下
    2022-03-03
  • Python中的time模塊與datetime模塊用法總結(jié)

    Python中的time模塊與datetime模塊用法總結(jié)

    Python中內(nèi)置的各項(xiàng)時(shí)間日期函數(shù)幾乎都來(lái)自于time和datetime這兩個(gè)模塊,下面整理了Python中的time模塊與datetime模塊用法總結(jié),需要的朋友可以參考下
    2016-06-06
  • python飛機(jī)大戰(zhàn)pygame游戲之?dāng)硻C(jī)出場(chǎng)實(shí)現(xiàn)方法詳解

    python飛機(jī)大戰(zhàn)pygame游戲之?dāng)硻C(jī)出場(chǎng)實(shí)現(xiàn)方法詳解

    這篇文章主要介紹了python飛機(jī)大戰(zhàn)pygame游戲之?dāng)硻C(jī)出場(chǎng)實(shí)現(xiàn)方法,結(jié)合實(shí)例形式詳細(xì)分析了Python使用pygame模塊實(shí)現(xiàn)飛機(jī)大戰(zhàn)游戲中敵機(jī)出場(chǎng)相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2019-12-12
  • 詳解Python中靜態(tài)類型語(yǔ)言的寫(xiě)法

    詳解Python中靜態(tài)類型語(yǔ)言的寫(xiě)法

    眾所周知,python是一種動(dòng)態(tài)類型語(yǔ)言,但是,從v3.6版本開(kāi)始,開(kāi)始支持靜態(tài)類型的寫(xiě)法,下面小編就來(lái)和大家聊聊Python中靜態(tài)類型語(yǔ)言的具體寫(xiě)法吧
    2023-07-07
  • 現(xiàn)代Python編程的四個(gè)關(guān)鍵點(diǎn)你知道幾個(gè)

    現(xiàn)代Python編程的四個(gè)關(guān)鍵點(diǎn)你知道幾個(gè)

    這篇文章主要為大家詳細(xì)介紹了Python編程的四個(gè)關(guān)鍵點(diǎn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • Pandas之StyleFrame如何設(shè)置表格樣式

    Pandas之StyleFrame如何設(shè)置表格樣式

    這篇文章主要介紹了Pandas之StyleFrame如何設(shè)置表格樣式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Pandas實(shí)現(xiàn)Dataframe的合并

    Pandas實(shí)現(xiàn)Dataframe的合并

    我們知道,在使用pandas處理數(shù)據(jù)的時(shí)候,往往會(huì)需要合并兩個(gè)或者多個(gè)DataFrame的操作,那么本文就來(lái)介紹一下Pandas實(shí)現(xiàn)Dataframe的合并,感興趣的可以了解一下
    2021-06-06

最新評(píng)論

汉寿县| 津南区| 太仆寺旗| 克山县| 永丰县| 连州市| 文成县| 大田县| 名山县| 黄冈市| 峨山| 辽源市| 巴中市| 吉林省| 太白县| 三门峡市| 鲜城| 绥芬河市| 江西省| 仙桃市| 汝州市| 东宁县| 长治市| 苗栗县| 筠连县| 云梦县| 平遥县| 修水县| 鹤岗市| 香河县| 碌曲县| 旺苍县| 年辖:市辖区| 甘肃省| 宁乡县| 公主岭市| 土默特右旗| 永清县| 冕宁县| 湟中县| 阳高县|