手把手教你用Python製作簡易小說閱讀器

2021-10-25 22:26:38 字數 4411 閱讀 9293

/前言/

不知從什麼時候開始。**開始掀起了一股浪潮,它讓我們平日裡的生活不在枯燥乏味,很多我們做不到的事情在**裡都能輕易實現。

/具體實現/

**閱讀器的話,當然介面是少不了的,下面我們開始編寫介面。

1、首先匯入我們需要用到的包

import time

from tkinter import messagebox

import tkinter as t

from tkinter import ttk

from tkinter import filedialog

from tkinter import ******dialog

複製**

2、編寫主介面

class gui:

def __init__(self):

self.root=t.tk()

self.root.title('**閱讀器v1.0') #視窗名稱

self.root.geometry("700x700") #設定視窗大小

self.root.wm_attributes('-topmost',1) #視窗置頂

self.root.wm_minsize(140, 170) # 設定視窗最小化大小

self.root.wm_maxsize(1440, 2800) # 設定視窗最大化大小

self.root.resizable(width=false, height=true) # 設定視窗寬度不可變,高度可變

self.te=t.text(self.root,width=60,height=40) #多行文字框

self.b1= t.button(self.root, text='開啟檔案',font =("宋體",10,'bold'),command=self.open_file)

self.cb=ttk.combobox(self.root, width=12) #下拉列表框

self.b2=t.button(self.root,text='清空內容',command=self.clean) #按鈕

self.l1=t.label(self.root,text='請選擇閱讀速度:') #標籤

self.cb['values'] = ('請選擇-----','全部讀取','一秒一行','兩秒一行','自定義') #設定下拉列表框的內容

self.cb.current(0) #將當前選擇狀態置為0,也就是第一項

self.cb.bind("<>",self.go) #繫結go函式,然後觸發事件

self.b1.place(x=30,y=30)

self.b2.place(x=360,y=26)

self.l1.place(x=130,y=30)

self.te.place(x=30,y=60)

self.cb.place(x=230,y=30)

self.root.mainloop()

複製**

3、編寫開啟檔案對話方塊的**

def open_file(self):

self.file=filedialog.askopenfilename(title='開啟檔案', filetypes=[('文字檔案', '*.txt'), ('all files', '*')])

return self.file

複製**

這樣就開啟了以文字檔案為首的檔案。

4、選擇開啟的檔案進行讀取

self.ff=open(self.file,'r', encoding='utf8')

aa=self.ff.read()

複製**

5、將檔案中的內容的所有空格換行去掉

self.ab=aa.replace('\n','').replace('\t','').strip()

複製**

6、實現下拉列表中每個選項的功能

if self.cb.get()=='請選擇-----':

pass

elif self.cb.get()=='全部讀取':

if self.ab:

self.te.insert('insert',self.ab) #插入內容

self.te.update() #更新內容

else:

self.ff.close()

elif self.cb.get()=='一秒一行':

for y in range(len(self.ab)): #遍歷檔案內容

if self.ab:

self.te.insert('insert',self.ab[y]) #插入內容

if y%10==0 and y!=0:#判斷如果讀取到十個字的長度則插入文字內容到文字框並換行

self.te.insert('insert','\n') #插入換行

self.te.update() #更新內容

else:

time.sleep(0.1) #每隔0.1秒顯示乙個,一行十個字,就能達到一秒出一行

else:

self.ff.close() #關閉檔案

elif self.cb.get()=='兩秒一行':

for y in range(len(self.ab)):

if self.ab:

self.te.insert('insert',self.ab[y])

if y%10==0 and y!=0:

self.te.insert('insert','\n')

self.te.update()

else:

time.sleep(0.2)

else:

self.ff.close()

elif self.cb.get()=='自定義':

res=******dialog.askinteger(title='請輸入',prompt='幾秒讀取一行:',initialvalue= '')

for y in range(len(self.ab)):

if self.ab:

self.te.insert('insert',self.ab[y])

if y%10==0 and y!=0:

self.te.insert('insert','\n')

self.te.update()

else:

time.sleep(res/10)

​ else:

self.ff.close()

複製**

這樣就實現了每隔一秒每十個位元組輸出一行,當然你也可以乙個字乙個字讓它輸出,如果是這樣,只需將下面的**:

for y in range(len(self.ab)): #遍歷檔案內容

if self.ab:

self.te.insert('insert',self.ab[y]) #插入內容

if y%10==0 and y!=0: #判斷如果讀取到十個位元組長度則插入文字內容到文字框

self.te.insert('insert','\n')

self.te.update() #更新內容

else:

time.sleep(0.1)

複製**

改為:

for y in range(len(self.ab)): #遍歷檔案內容

if self.ab:

​ if y % 10==0 and y!=0: #判斷如果讀取到十個位元組長度則插入文字內容到文字框

self.te.insert('insert','\n')

else:

self.te.insert('insert',self.ab[y]) #插入內容

self.te.update() #更新內容

time.sleep(0.1)

複製**

8、清空內容

def clean(self):

self.te.delete('1.0', t.end) #刪除文字框所有內容

複製**

這樣就可以實現了。

下面我們來看下具體效果吧:

複製**

把10改為其他數字,他就會顯示相應長度的字元了。

/小結/

手把手教你用Ucos

ucos作業系統的學習 實時作業系統 任務切換,排程 分式作業系統 不可剝奪型核心 ucosii嵌入式實時作業系統的源 分為三部分 與硬體無關的核心 與處理器有關的移植 和使用者配置檔案。ucos最多支援64個任務,優先順序分別對應0 63,其中0為最高優先順序,系統保留4個最高優先順序的任務,和4...

手把手教你用Python實踐深度學習

課程共七章,採用最新版本進行教學,2018必學技術 第一章 從人工智慧到深度學習 第二章 使用tensorflow keras 建構人工神經網路 artificial neural network 第三章 卷積神經網路 convolutional neural network 第四章 迴圈神經網路 ...

手把手教你用Charles抓包

日常開發過程中難免要進行抓包,檢視服務端返回的資料是否正常,而charles可謂是抓包利器了。配置好以後,charles實際上讓電腦成了乙個中間 伺服器,我們手機上的所有請求都會經過電腦,被charles攔截,然後charles把自己偽裝成手機向我們的遠端伺服器位址傳送請求,所以charles能記錄...