日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

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

系統(tǒng) 1796 0

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

開(kāi)始

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

python實(shí)現(xiàn)屏保程序(適用于背單詞)_第1張圖片

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

接下來(lái),我們要?jiǎng)?chuàng)建文字類(lèi):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è)類(lèi):
在Screensaver()類(lèi)中添加三個(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é)果如圖:

python實(shí)現(xiàn)屏保程序(適用于背單詞)_第2張圖片

需要注意的是:這里的單詞是我在網(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í)有所幫助,也希望大家多多支持腳本之家。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 琼海市| 仲巴县| 文山县| 乌兰浩特市| 兴山县| 盐池县| 石景山区| 洛隆县| 奉节县| 常熟市| 泗阳县| 义乌市| 手游| 奎屯市| 河源市| 开平市| 桐柏县| 博野县| 鹰潭市| 广灵县| 赣榆县| 邮箱| 宁武县| 新丰县| 紫云| 德惠市| 桃源县| 海南省| 渭源县| 房产| 宁安市| 莆田市| 仪陇县| 雅江县| 文安县| 乌海市| 错那县| 张家界市| 阿城市| 襄汾县| 惠州市|