Python Tkinter GUI 应用:使用 PyMySQL 连接数据库查询猪群信息
import tkinter as tk
import pymysql
class MyApp:
def __init__(self):
self.window = tk.Tk()
self.herdid_t = tk.StringVar()
self.herdname_t = tk.StringVar()
self.creattime_t = tk.StringVar()
tk.Label(self.window, text='herdid').grid(row=0, column=0)
tk.Label(self.window, text='herdname').grid(row=1, column=0)
tk.Label(self.window, text='creattime').grid(row=2, column=0)
self.herdid_entry = tk.Entry(self.window, textvariable=self.herdid_t)
self.herdid_entry.grid(row=0, column=1)
self.herdname_entry = tk.Entry(self.window, textvariable=self.herdname_t)
self.herdname_entry.grid(row=1, column=1)
self.creattime_entry = tk.Entry(self.window, textvariable=self.creattime_t)
self.creattime_entry.grid(row=2, column=1)
self.select_button = tk.Button(self.window, text='查询', command=self.select)
self.select_button.grid(row=3, columnspan=2)
self.result_label = tk.Label(self.window, text='')
self.result_label.grid(row=4, columnspan=2)
def select(self):
db = pymysql.connect(host='localhost', user='root', password='111111', port=3306, db='student', charset='utf8')
cursor = db.cursor()
sql = f"SELECT * FROM pigherd WHERE herdid='{self.herdid_t.get()}' OR herdname='{self.herdname_t.get()}' OR creattime='{self.creattime_t.get()}'"
cursor.execute(sql)
result = cursor.fetchone()
self.result_label.config(text=result)
db.close()
def run(self):
self.window.mainloop()
app = MyApp()
app.run()
代码功能解释:
- 导入必要的模块:
import tkinter as tk
和import pymysql
分别用于创建 GUI 界面和连接数据库。 - 创建
MyApp
类: 该类包含了 GUI 应用程序的所有逻辑。 - 构造函数
__init__
:- 创建主窗口
self.window
。 - 使用
tk.StringVar
创建变量,用于存储用户输入的猪群 ID、猪群名称和创建时间。 - 创建标签和输入框,并将它们放置在窗口的指定位置。
- 创建查询按钮,并绑定
self.select
方法作为点击事件的回调函数。 - 创建一个标签,用于显示查询结果。
- 创建主窗口
select
方法:- 使用
pymysql
连接数据库。 - 根据用户输入的条件构造 SQL 查询语句。
- 执行查询并获取结果。
- 使用
self.result_label.config(text=result)
将查询结果显示在标签中。 - 关闭数据库连接。
- 使用
run
方法: 启动 GUI 应用程序的主循环,使界面保持响应状态。
代码说明:
- 代码中使用了
f-string
格式化字符串,方便构造 SQL 查询语句。 fetchone()
方法用于获取查询结果的第一条记录。- 代码中使用了
tk.grid
布局管理器来管理窗口中控件的位置。 command=self.select
将select
方法绑定到按钮的点击事件上。self.result_label.config(text=result)
用于将查询结果显示在标签中。
代码优化建议:
- 可以添加错误处理机制,例如当数据库连接失败或查询语句错误时,显示错误信息。
- 可以添加更多的功能,例如:
- 查询所有猪群信息。
- 按条件过滤查询结果。
- 更新或删除猪群信息。
- 可以将代码封装成一个独立的模块,以便更好地组织和复用。
总结:
该代码提供了一个简单的例子,展示了如何使用 Python Tkinter 和 PyMySQL 创建一个简单的 GUI 应用程序,通过输入查询条件从数据库中查询数据并显示结果。该代码可以作为学习 Tkinter 和 PyMySQL 的入门示例,并可以根据实际需要进行扩展和完善。
原文地址: http://www.cveoy.top/t/topic/pNCl 著作权归作者所有。请勿转载和采集!