2025年3月7日 星期五

Tkinter Python GUI(圖形使用者介面)

 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 專案? 🚀

沒有留言:

張貼留言