首页
学习
活动
专区
圈层
工具
发布

Python开发一个用户个人信息收集器软件实战

按钮的常用属性

常用属性如下:

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

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OrpV82C31eEPnH6Atjqp5EOA0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。
领券