您好,登錄后才能下訂單哦!
本篇內容介紹了“怎么用Python制作簡易的小說編輯器”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
小說閱讀器的話,當然界面是少不了的,下面我們開始編寫界面。 1、首先導入我們需要用到的包
import time from tkinter import messagebox import tkinter as t from tkinter import ttk from tkinter import filedialog from tkinter import simpledialog
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("<<ComboboxSelected>>",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=simpledialog.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) #刪除文本框所有內容
這樣就可以實現了。
下面我們來看下具體效果吧:
這樣我們就輕松實現了一個小說閱讀器,順帶提一下,你想一行多顯示幾個字符,只需要修改下面這行的數字即可:
if y % 10==0 and y!=0:
把10改為其他數字,他就會顯示相應長度的字符了。
“怎么用Python制作簡易的小說編輯器”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。