高考完後這麼就才想起這系列教程,實在抱歉,現在該來繼續教程了。 本節利用前面所學知識,來完成一個小工具——文本編輯器! ...
高考完後這麼就才想起這系列教程,實在抱歉,現在該來繼續教程了。
本節利用前面所學知識,來完成一個小工具——文本編輯器!
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函數。
打開文件的流程是怎麼樣的呢?
- 首先,我們要知道文件的路徑,先從文本輸入框輸入文件的路徑
- 點擊打開按鈕
- 點擊打開按鈕幕後將文件打開,讀取文件內容,把文件內容顯示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有興趣的話,可以自己搜索學習,相信大家能做出有趣的程式來。