Tkinter 是 Python 的標準 GUI(圖形使用者介面)工具包,適用於開發桌面應用程式。它內建於 Python,無需額外安裝,可以用來建立視窗、按鈕、標籤、文字框等 UI 元件。
Tkinter 基本應用
下面是一個基本的 Tkinter 應用程式,它會顯示一個簡單的視窗,包含一個按鈕,點擊後會顯示「Hello, Tkinter!」:
import tkinter as tk
from tkinter import messagebox
def show_message():
messagebox.showinfo("訊息", "Hello, Tkinter!")
# 創建主視窗
root = tk.Tk()
root.title("Tkinter 範例")
root.geometry("300x200")
# 新增標籤
label = tk.Label(root, text="歡迎使用 Tkinter!", font=("Arial", 14))
label.pack(pady=10)
# 新增按鈕
button = tk.Button(root, text="點我", command=show_message)
button.pack(pady=10)
# 運行主視窗
root.mainloop()
Tkinter 主要元件
元件 | 描述 |
---|---|
Label |
顯示文字或圖片 |
Button |
按鈕 |
Entry |
單行文字輸入框 |
Text |
多行文字輸入框 |
Frame |
容器元件,用於組織其他元件 |
Checkbutton |
勾選框 |
Radiobutton |
單選按鈕 |
Listbox |
清單框 |
Canvas |
畫布,可用於繪圖 |
Menu |
選單欄 |
Tkinter 進階應用
1️⃣ 建立多行文字輸入框
import tkinter as tk
root = tk.Tk()
root.title("多行文字輸入框")
text = tk.Text(root, height=5, width=40)
text.pack()
root.mainloop()
2️⃣ 使用 grid()
進行佈局
Tkinter 提供 pack()
、grid()
和 place()
來排列 UI 元件。
import tkinter as tk
root = tk.Tk()
root.title("Grid 佈局")
# 使用 grid() 來排列元件
tk.Label(root, text="姓名:").grid(row=0, column=0)
entry_name = tk.Entry(root)
entry_name.grid(row=0, column=1)
tk.Label(root, text="密碼:").grid(row=1, column=0)
entry_password = tk.Entry(root, show="*")
entry_password.grid(row=1, column=1)
tk.Button(root, text="登入").grid(row=2, column=0, columnspan=2)
root.mainloop()
3️⃣ 開啟新視窗
import tkinter as tk
def open_window():
new_window = tk.Toplevel(root)
new_window.title("新視窗")
tk.Label(new_window, text="這是新的視窗").pack()
root = tk.Tk()
root.title("主視窗")
tk.Button(root, text="開啟新視窗", command=open_window).pack()
root.mainloop()
4️⃣ 使用 Canvas
繪圖
import tkinter as tk
root = tk.Tk()
root.title("Canvas 畫布")
canvas = tk.Canvas(root, width=300, height=200, bg="white")
canvas.pack()
# 畫一條線
canvas.create_line(50, 50, 250, 150, fill="red", width=3)
# 畫一個矩形
canvas.create_rectangle(50, 50, 150, 150, outline="blue", width=2)
# 畫一個圓形(橢圓)
canvas.create_oval(180, 50, 250, 120, outline="green", width=2)
root.mainloop()
這些是 Tkinter 的基礎應用,你可以根據需求來擴展功能,例如搭配 threading
來處理多線程操作,或整合 sqlite3
來存取資料庫。
你想實作哪種類型的 Tkinter 專案? 🚀
沒有留言:
張貼留言