按钮的常用属性
常用属性如下:
button = tk.Button(
root,
text="确定", # 按钮文字
command=my_function, # 点击时,执行的函数
width=10, # 宽度(字符数)
height=2, # 高度(字符数)
font=("Arial", 12), # 字体
fg="white", # 文字颜色
bg="blue", # 背景颜色
relief="raised", # 边框样式
state="normal", # 状态:normal/disabled
)
示例代码:
import tkinter as tk
def button_clicked():
"""按钮点击事件"""
print("按钮被点击了")
root = tk.Tk()
root.title("按钮测试")
root.geometry("300x200")
# 创建按钮
button = tk.Button(
root,
text="点击我",
command=button_clicked,
width=10,
height=2,
font=("Arial", 12),
fg="white",
bg="blue",
relief="raised",
state="normal",
)
button.pack(pady=10)
root.mainloop()
运行效果:
image.pngEntry输入框组件
import tkinter as tk
def get_input():
"""获取输入框内容"""
user_input = entry.get()
print(f"用户输入了:{user_input}")
result_label.config(text=f"你输入的是:{user_input}")
root = tk.Tk()
root.title("输入框测试")
root.geometry("400x200")
# 提示标签
tk.Label(root, text="请输入你的名字:").pack(pady=10)
# 输入框
entry = tk.Entry(root, width=30, font=("Arial", 12))
entry.pack(pady=10)
# 确认按钮
tk.Button(root, text="确认", command=get_input).pack(pady=10)
# 结果显示标签
result_label = tk.Label(root, text="", fg="blue")
result_label.pack(pady=10)
root.mainloop()
输出结果:
image.pngEntry的实用方法
entry.get() # 获取内容
entry.set("默认值") # 设置内容
entry.delete(0, tk.END) # 清空内容
entry.insert(0, "插入文字") # 插入文字
entry.config(state="disabled") # 禁用输入框
实战:用户个人信息收集器
完整代码:
import tkinter as tk
from tkinter import messagebox
from datetime import datetime
class PersonalInfoCollector:
def __init__(self):
self.root = tk.Tk()
self.root.title("个人信息收集器 v1.0")
self.root.geometry("500x400")
self.root.config(bg="lightblue")
self.create_widgets()
def create_widgets(self):
"""创建组件"""
# 标题
title_label = tk.Label(
self.root,
text=" 个人信息登记表",
font=("Arial", 18, "bold"),
bg="lightblue",
fg="darkblue"
)
title_label.pack(pady=20)
# 创建输入框架
info_frame = tk.Frame(self.root, bg="lightblue")
info_frame.pack(pady=20)
# 姓名输入
tk.Label(
info_frame,
text="姓名:",
font=("Arial", 12),
bg="lightblue",
).grid(
row=0,
column=0,
sticky="e",
padx=10,
pady=5,
)
self.name_entry = tk.Entry(
info_frame,
font=("Arial", 12),
width=20,
)
self.name_entry.grid(row=0, column=1, padx=10, pady=5)
# 年龄输入
tk.Label(
info_frame,
text="年龄:",
font=("Arial", 12),
bg="lightblue"
).grid(
row=1,
column=0,
sticky="e",
padx=10,
pady=5,
)
self.age_entry = tk.Entry(info_frame, font=("Arial", 12), width=20)
self.age_entry.grid(row=1,column=1,padx=10,pady=5)
# 城市输入
tk.Label(
info_frame,
text="城市:",
font=("Arial", 12),
bg="lightblue"
).grid(
row=2,
column=0,
sticky="e",
padx=10,
pady=5,
)
self.city_entry = tk.Entry(info_frame, font=("Arial", 12), width=20)
self.city_entry.grid(row=2,column=1,padx=10,pady=5)
# 邮箱输入
tk.Label(
info_frame,
text="邮箱:",
font=("Arial", 12),
bg="lightblue"
).grid(
row=3,
column=0,
sticky="e",
padx=10,
pady=5,
)
self.email_entry = tk.Entry(info_frame, font=("Arial", 12), width=20)
self.email_entry.grid(row=3,column=1,padx=10,pady=5)
# 按钮框架
button_frame = tk.Frame(self.root, bg="lightblue")
button_frame.pack(pady=30)
# 提交按钮
submit_btn = tk.Button(
button_frame,
text=" 提交信息",
command=self.submit_info,
font=("Arial", 12),
bg="green",
fg="white",
width=12,
height=2,
)
submit_btn.pack(side="left", padx=10)
# 清空按钮
clear_btn = tk.Button(
button_frame,
text=" 清空重填",
command=self.clear_info,
font=("Arial", 12),
bg="green",
fg="white",
width=12,
height=2,
)
clear_btn.pack(side="left", padx=10)
# 结果显示区域
self.result_text = tk.Text(
self.root,
height=8,
width=50,
font=("Arial", 10),
bg="white",
)
self.result_text.pack(pady=20)
def submit_info(self):
"""提交用户信息"""
# 获取用户输入
name = self.name_entry.get().strip()
age = self.age_entry.get().strip()
city = self.city_entry.get().strip()
email = self.email_entry.get().strip()
# 验证输入
if not all([name, age, city, email]):
messagebox.showerror("错误", "请填写所有信息!")
return
# 验证年龄是否为数字
try:
age_int = int(age)
if age_int < 0 or age_int > 150:
raise ValueError
except ValueError:
messagebox.showerror("错误", "请输入有效的年龄(0-150)!")
return
# 简单的邮箱验证
if "@" not in email or "." not in email:
messagebox.showerror("错误", "请输入有效的邮箱地址!")
return
# 显示结果
result = f"""
信息提交成功!
{'='*30}
姓名:{name}
年龄:{age}岁
城市:{city}
邮箱:{email}
⏰ 提交时间:{self.get_current_time()}
{'='*30}
"""
self.result_text.delete(1.0, tk.END)
self.result_text.insert(1.0, result)
messagebox.showinfo("成功", "信息已成功提交!")
def clear_info(self):
"""清空用户信息"""
self.name_entry.delete(0,tk.END)
self.age_entry.delete(0,tk.END)
self.city_entry.delete(0,tk.END)
self.email_entry.delete(0,tk.END)
self.result_text.delete(1.0,tk.END)
messagebox.showinfo("提示", "所有信息已清空!")
def get_current_time(self):
return datetime.now().strftime("%Y-%m-%d %H:%M:%S")
def run(self):
self.root.mainloop()
if __name__ == "__main__":
app = PersonalInfoCollector()
app.run()
运行效果:
image.png