Python - GUI編程:初學者指南創建圖形用戶界面

你好,有抱負的程序员!你準備好進入Python GUI編程的精彩世界了嗎?作為你友善的鄰居電腦老師,我將引導你穿越使用Python創建圖形用戶界面的迷人領域。如果你從未寫過一行代碼,也別擔心——我們將從最基本的知識開始,逐步進階。所以,拿起你最喜歡的飲料,放鬆一下,我們一起深入探討吧!

Python - GUI Programming

Tkinter編程:進入GUI創建的門戶

Tkinter是什麼?

Tkinter就像是Python GUI編程的瑞士軍刀。它是一個內置模塊,隨Python預裝,非常容易上手。將Tkinter視為你在程序中構建窗口、按鈕、文本框以及各種交互元素的可靠工具箱。

你的第一個Tkinter程序

讓我們從一個簡單的例子開始:

import tkinter as tk

root = tk.Tk()
root.title("我的第一個GUI")
label = tk.Label(root, text="你好,Tkinter!")
label.pack()
root.mainloop()

讓我們來解釋一下:

  1. 我們導入tkinter模塊,並為方便起見給它別名'tk'。
  2. tk.Tk()創建了我們的主窗口。
  3. 我們用root.title()設置窗口標題。
  4. 我們創建了一個帶有文字的標籤小部件。
  5. pack()方法將我們的標籤添加到窗口中。
  6. 最後,mainloop()啟動事件循環,這讓我們的窗口保持打開並且能夠響應。

運行這段代碼,瞧!你剛剛創建了你的第一個GUI應用程序。非常酷,對吧?

Tkinter小部件:GUI的構建塊

小部件是構成你GUI的個別元素。它們就像是界面設計的樂高積木。讓我們來探索一些常見的小部件:

�按鈕

按鈕可能是最熟悉的小部件。以下是創建按鈕的方法:

import tkinter as tk

def button_click():
print("按鈕被點擊了!")

root = tk.Tk()
button = tk.Button(root, text="點我!", command=button_click)
button.pack()
root.mainloop()

在這個例子中,我們創建了一個當被點擊時會打印消息的按鈕。command參數將按鈕鏈接到button_click函數。

輸入小部件

輸入小部件允許用戶輸入文本:

import tkinter as tk

root = tk.Tk()
entry = tk.Entry(root)
entry.pack()
root.mainloop()

這創建了一個簡單的文本輸入字段。你可以使用entry.get()來獲取文本。

標準屬性:自定義你的小部件

小部件有各種可以自定義的屬性。以下是一些常見的:

屬性 描述 示例
bg 背景顏色 button = tk.Button(root, text="點擊", bg="blue")
fg 前景(文字)顏色 label = tk.Label(root, text="你好", fg="red")
font 文字字體和大小 label = tk.Label(root, text="大", font=("Arial", 20))
width 小部件寬度 entry = tk.Entry(root, width=30)
height 小部件高度 text = tk.Text(root, height=5)

几何管理:安排你的小部件

Tkinter提供了三種主要的幾何管理器來在你的窗口中安排小部件:

Pack

我們已經見過pack()的運作。這是最簡單的方法來添加小部件:

import tkinter as tk

root = tk.Tk()
label1 = tk.Label(root, text="第一個")
label2 = tk.Label(root, text="第二個")
label1.pack()
label2.pack()
root.mainloop()

這會將小部件垂直堆疊。

Grid

Grid允許更精確的放置:

import tkinter as tk

root = tk.Tk()
label1 = tk.Label(root, text="姓名:")
entry1 = tk.Entry(root)
label2 = tk.Label(root, text="密碼:")
entry2 = tk.Entry(root, show="*")

label1.grid(row=0, column=0)
entry1.grid(row=0, column=1)
label2.grid(row=1, column=0)
entry2.grid(row=1, column=1)

root.mainloop()

這創建了一個簡單的登錄表單,帶有對齊的標籤和輸入框。

Place

Place給你對小部件定位的絕對控制:

import tkinter as tk

root = tk.Tk()
button = tk.Button(root, text="居中按鈕")
button.place(relx=0.5, rely=0.5, anchor="center")
root.mainloop()

這會將按鈕放在窗口的中心。

SimpleDialog:快速簡單的對話框

SimpleDialog非常適合創建快速的彈出窗口:

from tkinter import simpledialog

result = simpledialog.askstring("輸入", "你的名字是什麼?")
print(f"你好,{result}!")

這會創建一個對話框,詢問用戶的名字。

FileDialog模塊:使用文件

FileDialog幫助你創建文件打開和保存對話框:

from tkinter import filedialog

file_path = filedialog.askopenfilename()
print(f"你選擇了:{file_path}")

這會打開一個文件選擇對話框,並打印選擇的文件路徑。

ttk模塊:主題小部件

ttk模塊提供了看起來更現代的主題小部件:

from tkinter import ttk

root = tk.Tk()
button = ttk.Button(root, text="主題按鈕")
button.pack()
root.mainloop()

Combobox小部件

Combobox是輸入和下拉列表的組合:

from tkinter import ttk

root = tk.Tk()
combo = ttk.Combobox(root, values=["選項1", "選項2", "選項3"])
combo.pack()
root.mainloop()

進度條

進度條非常適合顯示任務進度:

from tkinter import ttk

root = tk.Tk()
progress = ttk.Progressbar(root, length=200, mode='determinate')
progress.pack()
progress['value'] = 50  # 將進度設置為50%
root.mainloop()

Sizegrip

Sizegrip允許用戶調整窗口大小:

from tkinter import ttk

root = tk.Tk()
sizegrip = ttk.Sizegrip(root)
sizegrip.pack(side="right", anchor="se")
root.mainloop()

分隔線

分隔線用於視覺上分隔小部件:

from tkinter import ttk

root = tk.Tk()
label1 = tk.Label(root, text="上方")
separator = ttk.Separator(root, orient='horizontal')
label2 = tk.Label(root, text="下方")

label1.pack()
separator.pack(fill='x')
label2.pack()
root.mainloop()

以上就是Python GUI編程使用Tkinter的基本知識。記住,練習成就完美,所以不要害怕實驗並創建自己的GUI。誰知道呢?你的下一個項目可能就是人人都在談論的下一個大應用!

編程快樂,未來的GUI巫師!?‍♂️??

Credits: Image by storyset