<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 5020字,需瀏覽 11分鐘

           ·

          2020-12-04 18:29

          擊上方“Python爬蟲與數(shù)據(jù)挖掘”,進行關(guān)注

          回復(fù)“書籍”即可獲贈Python從入門到進階共10本電子書

          沉吟放撥插弦中,整頓衣裳起斂容。

          /前言/

          ????不知從什么時候開始。小說開始掀起了一股浪潮,它讓我們平日里的生活不在枯燥乏味,很多我們做不到的事情在小說里都能輕易實現(xiàn)。

          ????今天我們要做的就是一個小說閱讀器了,一個可以將你的文章中的字每隔多少秒顯示一次的閱讀器,就好比手機上的定時閱讀一樣,是不是很有趣?那么下面我們就來具體看看它是如何實現(xiàn)的吧。


          /具體實現(xiàn)/

          小說閱讀器的話,當(dāng)然界面是少不了的,下面我們開始編寫界面。

          1、首先導(dǎo)入我們需要用到的包

          import timefrom tkinter import messageboximport tkinter as tfrom tkinter import ttkfrom tkinter import filedialogfrom tkinter import simpledialog

          2、編寫主界面

          class gui:    def __init__(self):        self.root=t.Tk()        self.root.title('小說閱讀器V1.0')  #窗口名稱        self.root.geometry("700x700")  #設(shè)置窗口大小        self.root.wm_attributes('-topmost',1) #窗口置頂        self.root.wm_minsize(140, 170)                  # 設(shè)置窗口最小化大小        self.root.wm_maxsize(1440, 2800)             # 設(shè)置窗口最大化大小        self.root.resizable(width=False, height=True)     # 設(shè)置窗口寬度不可變,高度可變        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='清空內(nèi)容',command=self.clean) #按鈕        self.l1=t.Label(self.root,text='請選擇閱讀速度:') #標(biāo)簽        self.cb['values'] = ('請選擇-----','全部讀取','一秒一行','兩秒一行','自定義') #設(shè)置下拉列表框的內(nèi)容           self.cb.current(0)    #將當(dāng)前選擇狀態(tài)置為0,也就是第一項        self.cb.bind("<>",self.go)  #綁定go函數(shù),然后觸發(fā)事件        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、將文件中的內(nèi)容的所有空格換行去掉

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

          6、實現(xiàn)下拉列表中每個選項的功能

          if self.cb.get()=='請選擇-----':            pass        elif self.cb.get()=='全部讀取':            if self.ab:                self.te.insert('insert',self.ab) #插入內(nèi)容                self.te.update()  #更新內(nèi)容            else:                self.ff.close()        elif self.cb.get()=='一秒一行':            for y in range(len(self.ab)): #遍歷文件內(nèi)容                if self.ab:                    self.te.insert('insert',self.ab[y]) #插入內(nèi)容                    if y%10==0 and y!=0:#判斷如果讀取到十個字的長度則插入文本內(nèi)容到文本框并換行                        self.te.insert('insert','\n') #插入換行                        self.te.update()        #更新內(nèi)容                    else:                        time.sleep(0.1) #每隔0.1秒顯示一個,一行十個字,就能達到一秒出一行                else:                    self.ff.close() #關(guān)閉文件        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()

          這樣就實現(xiàn)了每隔一秒每十個字節(jié)輸出一行,當(dāng)然你也可以一個字一個字讓它輸出,如果是這樣,只需將下面的代碼:

          for y in range(len(self.ab)): #遍歷文件內(nèi)容                if self.ab:                    self.te.insert('insert',self.ab[y]) #插入內(nèi)容                    if y%10==0 and y!=0: #判斷如果讀取到十個字節(jié)長度則插入文本內(nèi)容到文本框                        self.te.insert('insert','\n')                        self.te.update()        #更新內(nèi)容                    else:                        time.sleep(0.1)

          改為:

          for y in range(len(self.ab)): #遍歷文件內(nèi)容                if self.ab:
          if y % 10==0 and y!=0: #判斷如果讀取到十個字節(jié)長度則插入文本內(nèi)容到文本框 self.te.insert('insert','\n') else: self.te.insert('insert',self.ab[y]) #插入內(nèi)容 self.te.update() #更新內(nèi)容 time.sleep(0.1)

          8、清空內(nèi)容

          def clean(self):    self.te.delete('1.0', t.END) #刪除文本框所有內(nèi)容

          這樣就可以實現(xiàn)了。

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

          這樣我們就輕松實現(xiàn)了一個小說閱讀器,順帶提一下,你想一行多顯示幾個字符,只需要修改下面這行的數(shù)字即可:

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

          把10改為其他數(shù)字,他就會顯示相應(yīng)長度的字符了。


          /小結(jié)/

          1、本文基于Python庫,編寫了可視化圖形界面,打造了一款簡易小說閱讀器,實現(xiàn)自定義字符大小的小說閱讀器。今天的分享就到這里了,歡迎大家嘗試。

          想學(xué)習(xí)更多關(guān)于Python的知識,可以參考學(xué)習(xí)網(wǎng)址:http://pdcfighting.com/,點擊閱讀原文,可以直達噢~

          -------------------?End?-------------------

          往期精彩文章推薦:

          歡迎大家點贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持

          想加入Python學(xué)習(xí)群請在后臺回復(fù)【入群

          萬水千山總是情,點個【在看】行不行

          /今日留言主題/

          隨便說一兩句吧~~

          瀏覽 93
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  女人又爽 又黄 免费在线 | 国产黄色接吻视频网站 | 天堂在线观看av 亚洲无码视频播放 | 神马午夜三级片 | 亚洲最爽|