文、意如
實作作品:
表單設計 欄位:例如,姓名,電話,地址,性別(單選), 興趣(多選),建議事項等等,
總類越多越好, 按下確定後,整理印出使用者輸入的資訊
範例如下:
參考程式碼:
import tkinter as tk
def submit_form():
name = name_entry.get()
email = email_entry.get()
age = age_entry.get()
gender = gender_var.get()
hobbies = [hobbies_list[i] for i in range(len(hobbies_list)) if hobbies_vars[i].get()]
suggestion = suggestion_text.get("1.0", tk.END).strip()
# 在這裡可以處理表單提交後的資料,例如儲存到資料庫或顯示訊息
print("姓名:", name)
print("電子郵件:", email)
print("年齡:", age)
print("性別:", gender)
print("興趣:", hobbies)
print("建議事項:", suggestion)
# 更新 Label 中的內容
result_label.config(text=f"姓名: {name}\n電子郵件: {email}\n年齡: {age}\n性別: {gender}\n興趣: {', '.join(hobbies)}\n建議事項: {suggestion}")
# 創建主視窗
win = tk.Tk()
win.title("表單示例")
# 表單元素
name_label = tk.Label(win, text="姓名:")
name_label.pack()
name_entry = tk.Entry(win)
name_entry.pack()
email_label = tk.Label(win, text="電子郵件:")
email_label.pack()
email_entry = tk.Entry(win)
email_entry.pack()
age_label = tk.Label(win, text="年齡:")
age_label.pack()
age_entry = tk.Entry(win)
age_entry.pack()
# 單選元件 - 性別
gender_label = tk.Label(win, text="性別:")
gender_label.pack()
gender_var = tk.StringVar()
gender_var.set("男") # 預設選擇男性
male_radio = tk.Radiobutton(win, text="男", variable=gender_var, value="男")
female_radio = tk.Radiobutton(win, text="女", variable=gender_var, value="女")
male_radio.pack()
female_radio.pack()
# 複選元件 - 興趣
hobbies_label = tk.Label(win, text="興趣:")
hobbies_label.pack()
hobbies_list = ["音樂", "閱讀", "運動", "旅遊"]
hobbies_vars = [tk.BooleanVar() for _ in range(len(hobbies_list))]
for i in range(len(hobbies_list)):
chk = tk.Checkbutton(win, text=hobbies_list[i], variable=hobbies_vars[i])
chk.pack()
# 建議事項 - Text 元件
suggestion_label = tk.Label(win, text="建議事項:")
suggestion_label.pack()
suggestion_text = tk.Text(win, height=5)
suggestion_text.pack()
submit_button = tk.Button(win, text="提交", command=submit_form)
submit_button.pack()
# 框架
result_frame = tk.Frame(win, bd=2, relief=tk.GROOVE) #邊界(bd=2)和浮雕效果(relief=tk.GROOVE)
result_frame.pack(padx=10, pady=10, anchor=tk.CENTER) # 將框架置中,如 result_label 的文字對齊方式設定為 LEFT
# 顯示結果的 Label
result_label = tk.Label(result_frame, text="", justify=tk.LEFT, anchor="w")#使用 anchor="w" 來將文字靠左對齊
result_label.pack()
#在 result_frame.pack() 函數中加入了 anchor=tk.CENTER,這將使 result_frame 置中。
#同時,我們保留了 result_label 的文字對齊方式為 LEFT,並使用 anchor="w" 來將文字靠左對齊。
# 執行主迴圈
win.mainloop()
Yiru@Studio - 關於我 - 意如