在5分钟内使用Python和Tkinter创建一个简单的用户表单-初学者指南

使用Python和Tkinter快速创建用户表单-初学者指南

如今,所有企业都趋向于“数字化”。无论是小型企业还是大型企业,使用应用程序而不是手动收集信息也非常方便。这样看起来也更专业。无论是在医生的店铺还是在杂货店中,您都希望顾客能再次光临。

感谢Faizur Rehman在Unsplash上的照片

在本教程中,我将展示如何使用Python和流行的GUI工具包Tkinter创建一个非常简单的用户表单。通过本文的结束,您将具备为各种应用程序开发注册表单的技能。

我喜欢为我的机器学习项目创建不同的GUI。这使我有自由表达与最终用户进行交流的方式。为我的机器学习项目自己创建GUI,感觉就像是我自己在讲述故事,而不是其他人在讲述我的故事。

有许多可以用于在Python中构建GUI的库。其中一些著名的库包括PyQt5、Kivy、PySimpleGUI、Tkinter等。我使用Tkinter,因为我认为它是一个简单且基础的GUI库,非常适合初学者。尽管在使用Tkinter构建GUI时存在一些样式限制,但我用它来进行快速项目开发。

我也是Web应用的粉丝,但如果您不想公开披露应用程序,您将需要自己的Web服务器来分发它们。您可以在此处找到使用Streamlit创建Web应用的教程

相反,我发现使用Tkinter创建GUI并将其转换为可执行文件,并通过共享文件将其分发给最终用户非常容易。从时间和成本的角度来看,这是一种快速且经济的方式。

先决条件:

您的系统上应安装Python和Tkinter。如果您尚未安装Tkinter,可以使用Anaconda提示符中的pip进行安装:

pip install tk

步骤1:导入所需的库

如往常一样,您需要导入项目所需的所有库。我们需要tkinter和openpyxl包来完成这个简单的项目。您可以根据需要增强您的代码。

import openpyxl
from tkinter import *
from tkinter import messagebox

步骤2:初始化tkinter窗口

我将其命名为root,您可以自行命名。您可以根据需求在‘root.title()’内更改标题。’root.geometry()’定义了Tkinter窗口的大小。第一部分描述了宽度,第二部分描述了高度。您可以根据需要进行修改。这里,我定义了一个正方形窗口。

您也可以更改tkinter图标。但是,我们将不在本博客中讨论它。

# 创建主Tkinter窗口
root = Tk()
root.title("注册表单")
root.geometry('300x300')

步骤3:创建标签和输入字段

我已经创建了名字、姓氏、电子邮件和手机号等字段。您可以根据需要添加或删除字段。

您可以添加复选框、单选按钮、菜单、组合框等来增强用户表单。

# 为每个输入创建标签和输入字段
first_name_label = Label(root, text="名字:")
first_name_label.pack()
first_name_entry = Entry(root)
first_name_entry.pack()
Last_name_label = Label(root, text="姓氏:")
Last_name_label.pack()
Last_name_entry = Entry(root)
Last_name_entry.pack()
email_label = Label(root, text="电子邮件:")
email_label.pack()
email_entry = Entry(root)
email_entry.pack()
Mobile_label = Label(root, text="手机号:")
Mobile_label.pack()
Mobile_entry = Entry(root)
Mobile_entry.pack()

为了定位标签和输入字段,您可以使用pack、grid和place等不同的方法。

pack()将小部件放置在水平和垂直框中,这些框限制了左、右、上和下位置。每个框都相对于其他框进行偏移和相对位置。我觉得与其他方法相比,它的限制更多。

grid()将小部件定位在类似于电子表格的二维行列网格中。虽然这种方法的定位逻辑更易理解,但难以控制行列之间的间距。

place()使用x和y绝对坐标将小部件定位在二维网格中。您可以通过定义x和y坐标或定义相对x和相对y坐标来定义位置。

虽然我最喜欢的是“place()”方法,因为它可以精确地定位到您需要的位置,但在本博客中我使用了“pack()”方法,以便对初学者更简单。

也许在另一篇博客中,我将详细讨论每种方法的所有区别。

步骤4:创建一个函数从输入字段中获取数据

在这里,我想从GUI中获取数据并将其保存在Microsoft Excel中以供将来使用。您可以根据需要修改数据以更改保存方法。

def register():    #从表单中获取用户输入    first_name = first_name_entry.get()    Last_name = Last_name_entry.get()    email = email_entry.get()    Mobile = Mobile_entry.get()    #使用用户输入创建一个新行    new_row = [first_name, Last_name, email,Mobile]    #将新行追加到Excel表中    workbook = openpyxl.load_workbook("registration_data.xlsx")    sheet = workbook.active    sheet.append(new_row)    workbook.save("registration_data.xlsx")    messagebox.showinfo("Success", "Registration successful!")

步骤5:创建提交按钮并运行主循环

register_button = Button(root, text = "Register", command = register)register_button.pack()root.mainloop()

这是创建用户注册表单GUI的最后一步。您可以将此代码打包为可执行文件供最终用户运行,或者您可以增强它以创建一个完成更多花哨功能的完整应用程序。

您可以使用的完整代码:

import openpyxlfrom tkinter import *from tkinter import messageboxdef register():    #从表单中获取用户输入    first_name = first_name_entry.get()    Last_name = Last_name_entry.get()    email = email_entry.get()    Mobile = Mobile_entry.get()    #使用用户输入创建一个新行    new_row = [first_name, Last_name, email,Mobile]    #将新行追加到Excel表中    workbook = openpyxl.load_workbook("registration_data.xlsx")    sheet = workbook.active    sheet.append(new_row)    workbook.save("registration_data.xlsx")    messagebox.showinfo("Success", "Registration successful!")#创建主要的tkinter窗口root = Tk()root.title("Registration Form")root.geometry('300x300')#为每个输入创建标签和输入字段first_name_label = Label(root, text = "First Name:")first_name_label.pack()first_name_entry = Entry(root)first_name_entry.pack()Last_name_label = Label(root, text = "Last Name:")Last_name_label.pack()Last_name_entry = Entry(root)Last_name_entry.pack()email_label = Label(root, text = "Email:")email_label.pack()email_entry = Entry(root)email_entry.pack()Mobile_label = Label(root, text = "Mobile:")Mobile_label.pack()Mobile_entry = Entry(root)Mobile_entry.pack()register_button = Button(root, text = "Register", command = register)register_button.pack()root.mainloop()

请记住,这只是一个非常基本的代码。您可能希望使用数据验证技术来应用于实际用例。

恭喜!您已经准备好第一个用户表单。