利用python中的tkinter设计gui,结合mysql数据库,编写外卖员收入金额统计功能,其中今日收入从已完成订单数据表中可以查到
时间: 2024-03-02 19:54:21 浏览: 88
好的,我可以帮你解答这个问题。
首先,需要安装MySQL数据库,并且安装相应的Python驱动程序,比如`pymysql`或者`mysql-connector-python`。
在Python中,可以使用`tkinter`库来创建GUI界面,可以使用`Label`控件来显示统计结果,使用`Button`控件来触发查询操作。
具体实现步骤如下:
1. 创建MySQL数据库,创建一个名为`order`的数据表,用于存储订单信息,包括订单号、外卖员、订单金额、订单状态等字段。
2. 在Python中,连接MySQL数据库,可以使用`pymysql`库的`connect`方法,如下所示:
```python
import pymysql
# 连接数据库
conn = pymysql.connect(host='localhost', port=3306, user='root', password='123456', database='test')
```
3. 在GUI界面中,添加两个`Label`控件用于显示统计结果,添加一个`Button`控件用于触发查询操作。
```python
import tkinter as tk
# 创建GUI窗口
root = tk.Tk()
# 创建Label控件用于显示统计结果
label_today_income = tk.Label(root, text='今日收入:')
label_total_income = tk.Label(root, text='总收入:')
# 创建Button控件用于触发查询操作
button_query = tk.Button(root, text='查询')
# 显示控件
label_today_income.pack()
label_total_income.pack()
button_query.pack()
root.mainloop()
```
4. 在查询按钮的回调函数中,查询已完成订单数据表中今日收入和总收入,并更新`Label`控件的显示内容。
```python
def query_income():
# 查询今日收入
today_income_sql = "select sum(order_amount) from order where order_status='已完成' and date(order_time)=curdate()"
cursor.execute(today_income_sql)
today_income = cursor.fetchone()[0]
label_today_income.config(text='今日收入:{}'.format(today_income))
# 查询总收入
total_income_sql = "select sum(order_amount) from order where order_status='已完成'"
cursor.execute(total_income_sql)
total_income = cursor.fetchone()[0]
label_total_income.config(text='总收入:{}'.format(total_income))
# 绑定查询按钮的回调函数
button_query.config(command=query_income)
```
完整代码如下:
```python
import tkinter as tk
import pymysql
# 连接数据库
conn = pymysql.connect(host='localhost', port=3306, user='root', password='123456', database='test')
cursor = conn.cursor()
# 创建GUI窗口
root = tk.Tk()
# 创建Label控件用于显示统计结果
label_today_income = tk.Label(root, text='今日收入:')
label_total_income = tk.Label(root, text='总收入:')
# 创建Button控件用于触发查询操作
button_query = tk.Button(root, text='查询')
# 显示控件
label_today_income.pack()
label_total_income.pack()
button_query.pack()
def query_income():
# 查询今日收入
today_income_sql = "select sum(order_amount) from order where order_status='已完成' and date(order_time)=curdate()"
cursor.execute(today_income_sql)
today_income = cursor.fetchone()[0]
label_today_income.config(text='今日收入:{}'.format(today_income))
# 查询总收入
total_income_sql = "select sum(order_amount) from order where order_status='已完成'"
cursor.execute(total_income_sql)
total_income = cursor.fetchone()[0]
label_total_income.config(text='总收入:{}'.format(total_income))
# 绑定查询按钮的回调函数
button_query.config(command=query_income)
root.mainloop()
# 关闭数据库连接
cursor.close()
conn.close()
```
注意,这只是一个简单的示例,实际应用中,还需要考虑异常处理、用户权限等问题。
阅读全文