python小項目之文本編輯器


高考完后這么久才想起這系列教程,實在抱歉,現在該來繼續教程了。
本節利用前面所學知識,來完成一個小工具——文本編輯器!

tkinter

在實現文本編輯器之前,先來了解下tkinter這個python庫。

tkinter庫用來實現GUI程序(Graphical User Interface 圖形用戶界面),我們實現的文本編輯器是有圖形的,類似windows系統下的記事本。

當然啦,寫GUI程序不只有tkinter庫,還有更為強大的pyqt、wxpython等,不過對於本節實現編輯器來說,簡單的tkinter庫就已經足夠了,而且windows安裝的python一般自帶了這個庫,不必另外安裝。

實現文本編輯器

第一步——界面

首先,我們先把編輯器的圖形界面寫好。

什么?還沒說tkinter庫怎么用就開工了?@_@

別慌!很簡單,看下面代碼,相信注釋很清楚了:

import tkinter
# 導入tkinter庫


win = tkinter.Tk()  # 創建窗口
win.title('文本編輯器')  # 設置標題

entry_file = tkinter.Entry(win)  # 創建一個文本輸入框,用來設置文件路徑
entry_file.pack()  # 放置該輸入框

def do_open():
    # 打開文件
    pass
def do_save():
    # 保存文件
    pass

btn_open = tkinter.Button(win, text='打開', command=do_open)  # 創建按鈕用於打開文件
btn_save = tkinter.Button(win, text='保存', command=do_save)  # 創建按鈕用於保存文件

# 放置按鈕
btn_open.pack()
btn_save.pack()


# 創建多行文本框,用於編輯文件
text = tkinter.Text(win)
text.pack() 

win.mainloop()  # 進入消息循環

使用tkinter創建GUI程序,一般有以下框架:

win = tkinter.Tk()  # 創建窗口

# 界面的布局,如添加按鈕、文本框等等

win.mainloop()  # 進入消息循環

現在不必理解這個框架,我們就照着寫就好了。

現在對其中的一些地方做下解釋,一般創建控件(按鈕,文本框等稱為控件)的第一個參數為所在的容器,我們的程序里的控件都在主窗口里,也就是win對象。

我們首先創建了一個文本輸入框,用來設置要操作文件的路徑。

創建按鈕可以使用關鍵字參數text來設置按鈕的標簽(顯示的文字),用關鍵字參數command來設置點擊按鈕所做的事,我們分別創建了兩個按鈕,一個用來打開文件,一個用來保存文件。

最后創建了一個多行文本框,用於文件的編輯。

運行程序,窗口大致如下:
文本編輯器界面

大家的界面的樣式可能有點不一樣,這個因操作系統環境而異
(本人比較懶,因為本節重點不是圖形界面,所以沒有去規划界面的布局,僅僅把控件直接隨意放置,如有興趣,可以自己搜索tkinter的具體用法,畫一個比這個好看得多的界面^_^

第二步——打開文件

現在我們來實現打開文件這個功能,還記得前面有一句這樣的代碼嗎?

btn_open = tkinter.Button(win, text='打開', command=do_open)  # 創建按鈕用於打開文件

我們給創建按鈕的tkinter.Button函數(實際上這不是函數),傳遞了一個參數command=do_open,該參數用於設置當按鈕被點擊時自動調用的函數,所以我們的重點就是實現這個當點擊時自動調用的do_open函數。

打開文件的流程是怎么樣的呢?

  1. 首先,我們要知道文件的路徑,先從文本輸入框輸入文件的路徑
  2. 點擊打開按鈕
  3. 點擊打開按鈕幕后將文件打開,讀取文件內容,把文件內容顯示d奧多行文本框中

其實我們的do_open函數就是上面的第三步,打開文件=>讀取數據=>顯示數據

具體代碼如下:

def do_open():
    # 打開文件
    file_path = entry_file.get()  # 獲取文本框的內容
    with open(file_path) as fr:
        # 打開文件
        content = fr.read()  #一次性讀取文件內容,對大文件不宜使用
        text.delete(0.0, tkinter.END)  # 清空文本框內容
        text.insert(tkinter.END, content)  # 在光標后插入內容

首先我們通過file_path = entry_file.get()獲取到了文本輸入框的內容作為文件的路徑,用with代碼塊打開文件,讀取文件數據后,將數據插入到多行文本框顯示。

在插入數據之前,先使用text.delete(0.0, tkinter.END)清空文本框,這里就不多解釋了。具體用法可以自己查查。

示例如下(這里我打開了python源碼文件本身):
打開文件

第三步——保存文件

保存文件的功能實現類似打開文件,點擊保存按鈕后:獲取多行文本框內容=>打開文件=>寫入文件

話不多說,上代碼!

def do_save():
    # 保存文件
    content = text.get(0.0, tkinter.END)  # 獲取文本框內容
    file_path = entry_file.get()  # 文件路徑
    with open(file_path, 'w') as fw:
        fw.write(content)  # 寫入數據到文件中

gif動圖演示:
保存文件

首先我在多行文本框中輸入了abcdefghijk,在文本輸入框輸入文件路徑1.txt,然后點擊保存。

之后把多行文本框的內容都刪掉,再打開1.txt文件,可以看到剛剛輸入的abcdefghijk內容,瀏覽目錄也可以發現,當前目錄下確實多了一個1.txt文件,可以用記事本查看,文件確實保存成功!

完整代碼

現貼出完整的代碼:

import tkinter
# 導入tkinter庫


win = tkinter.Tk()  # 創建窗口
win.title('文本編輯器')  # 設置標題

entry_file = tkinter.Entry(win)  # 創建一個文本輸入框
entry_file.pack()  # 放置該輸入框

def do_open():
    # 打開文件
    file_path = entry_file.get()  # 獲取文本框的內容
    with open(file_path) as fr:
        # 打開文件
        content = fr.read()  #一次性讀取文件內容,對大文件不宜使用
        text.delete(0.0, tkinter.END)  # 清空文本框內容
        text.insert(tkinter.END, content)  # 在光標后插入內容

def do_save():
    # 保存文件
    content = text.get(0.0, tkinter.END)  # 獲取文本框內容
    file_path = entry_file.get()  # 文件路徑
    with open(file_path, 'w') as fw:
        fw.write(content)



btn_open = tkinter.Button(win, text='打開', command=do_open)  # 創建按鈕用於打開文件
btn_save = tkinter.Button(win, text='保存', command=do_save)  # 創建按鈕用於保存文件

# 放置按鈕
btn_open.pack()
btn_save.pack()


# 創建多行文本框,用於編輯文件
text = tkinter.Text(win)
text.pack() 

win.mainloop()  # 進入消息循環

總結

這個小工具很簡單(也很丑 ( ̄_, ̄ )),但也將文件讀寫的知識應用到了實際。

如果大家對tkinter有興趣的話,可以自己搜索學習,相信大家能做出有趣的程序來。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM