這一週我總共寫了六篇文章:
這六天的文章中,三篇偏技術性,三篇偏實作性。
在這些小程式的開發過程中,我發現雖然一開始的純文字介面功能完整,但缺乏互動性,介面過於單調乏味。因此,今天我打算稍微改造我的小程式,使用 GUI 視覺化界面提升使用體驗,並將它們打包成 exe 檔。
這樣一來,之後使用時就能像開啟 App 一樣直接啟動,讓小程式更像真正的工具,而不只是單純的程式碼。
在釐清這個問題前我們先來看看CLI、GUI的差別是甚麼:
CLI 的全名是 Command-Line Interface,這種模式沒有圖案,一切操作都靠輸入文字指令來完成。
用貼近生活的方式來解釋:如果我們想要打開手機相簿,就需要用鍵盤打出類似 open photos 這樣的指令,然後按下 Enter 鍵;如果想刪除一張照片,可能需要打出 delete photo_name.jpg 這樣的精準指令。
整個過程都是透過鍵盤輸入文字來和電腦溝通。
優點是可以只利用一個指令進行重複執行或同時處理大量檔案,也比較節省資源。
GUI 的全名是 Graphical User Interface。簡單來說,它就是我們最熟悉的、充滿圖案和按鈕的模式。
與上一個情境相同,如果想要打開相簿,我們直接點一下圖示,圖片就出現了;如果想要刪除一張照片,我們只需按住它,然後拖到垃圾桶的圖示。
整個過程都是用眼睛看,用滑鼠或手指點擊來完成的。
優點是直覺好上手,都是視覺化的視窗、圖示、選單,操作非常明確,日常處理事務很方便。
特性 | 圖形介面 (GUI) | 文字模式 (CLI) |
---|---|---|
互動方式 | 滑鼠、觸控、圖示 | 鍵盤、文字指令 |
操作對象 | 圖片、視窗、按鈕 | 文字、指令 |
優點 | 直覺、易上手 | 快速、精準、高效率 |
適合對象 | 一般使用者、日常事務 | 程式設計師、系統管理員、需要處理大量複雜任務的人 |
現在來回答剛剛的問題,學習 GUI 是因為它是目前最普及、最直覺的電腦操作方式,讓我們輕鬆應對各種日常任務,而且其實,GUI 和 CLI 並不是互相衝突的,它們更像是兩種不同的工具,能各自在不同的場合發揮最大的作用。
常見的Python GUI工具有:
window = tk.Tk()
window.title("字數統計小程式")
window.geometry("550x500")
window.configure(bg="#f0f4f7")
text_area = scrolledtext.ScrolledText(window, wrap=tk.WORD, width=60, height=10,
font=("Microsoft JhengHei", 11), bg="#ffffff", fg="#000000")
text_area.pack(pady=10)
analyze_button = tk.Button(window, text="開始分析", command=analyze_text,
font=("Microsoft JhengHei", 12, "bold"),
bg="#4CAF50", fg="white", padx=10, pady=5, relief="raised")
analyze_button.pack(pady=10)
result_area = scrolledtext.ScrolledText(window, wrap=tk.WORD, width=60, height=10,
font=("Microsoft JhengHei", 11), bg="#ffffff", fg="#333366", state="disabled")
result_area.pack(pady=10)
前:
後:
root = tk.Tk()
root.title("抽籤小程式")
root.geometry("500x400")
root.resizable(False, False)
entry_candidates = tk.Entry(root, width=40)
entry_num = tk.Entry(root, width=5)
repeat_var = tk.BooleanVar()
chk_repeat = tk.Checkbutton(root, text="允許重複", variable=repeat_var)
btn_start = tk.Button(root, text="開始抽籤", command=start_lottery)
label_result = tk.Label(root, text="", font=("Microsoft JhengHei", 16), fg="blue")
前:
後:
這次把字數統計工具和抽籤程式改成了 GUI 版本,最大的體會就是互動性大幅提升。不再需要在黑底又單調的終端機輸入,而是透過輸入框、按鈕與結果區來操作。
使用 Tkinter 的好處在於能快速建立視窗介面,從標題、背景顏色到字體設計,都能讓小程式更有「App 感」。雖然程式碼比文字介面稍微多了一些,但過程中學會了如何以視覺化方式呈現結果,讓我覺得更有趣,也更有成就感。未來我也希望嘗試更多元的 GUI 元件,讓小程式的操作體驗更完整、更貼近真正的應用工具~