python 写一个界面实现excel表的导入,并对表进行添加、删除、修改、查询。每次操作新打开一个界面后返回
时间: 2023-12-30 22:03:16 浏览: 97
好的,我可以帮你回答这个问题。
首先,你可以使用 Python 的 tkinter 库来创建 GUI 界面。然后,使用 pandas 库来读取 Excel 表格数据并进行数据操作。每次操作后会打开一个新的界面来展示表格数据。
下面是一个示例代码,可以帮助你开始:
```python
import pandas as pd
import tkinter as tk
from tkinter import messagebox
from tkinter import filedialog
# 创建主窗口
root = tk.Tk()
root.title('Excel 数据操作')
root.geometry('500x500')
# 创建标签和文本框
label = tk.Label(root, text='请选择 Excel 文件:')
label.pack()
entry = tk.Entry(root)
entry.pack()
# 创建按钮
frame = tk.Frame(root)
frame.pack()
btn_import = tk.Button(frame, text='导入 Excel')
btn_add = tk.Button(frame, text='添加数据')
btn_delete = tk.Button(frame, text='删除数据')
btn_update = tk.Button(frame, text='修改数据')
btn_search = tk.Button(frame, text='查询数据')
# 创建表格
table = tk.Text(root)
table.pack()
# 定义弹窗函数
def popup_window(title, message):
messagebox.showinfo(title, message)
# 导入 Excel 文件
def import_excel():
# 打开文件选择对话框
file_path = filedialog.askopenfilename()
# 读取 Excel 表格数据
global df
df = pd.read_excel(file_path)
# 显示表格数据
table.delete('1.0', tk.END)
table.insert(tk.END, df.to_string(index=False))
# 添加数据
def add_data():
# 创建新窗口
add_window = tk.Toplevel(root)
add_window.title('添加数据')
add_window.geometry('300x100')
# 创建标签和文本框
label = tk.Label(add_window, text='请输入 ID:')
label.pack()
entry = tk.Entry(add_window)
entry.pack()
# 创建确认按钮
btn_confirm = tk.Button(add_window, text='确认', command=lambda: add_data_confirm(entry.get(), add_window))
btn_confirm.pack()
# 添加数据确认
def add_data_confirm(id, window):
# 判断 ID 是否已经存在
if id in df['ID'].values:
popup_window('添加数据', 'ID 已经存在,请输入新的 ID!')
else:
# 添加数据到 DataFrame
global df
df = df.append({'ID': id}, ignore_index=True)
# 弹出提示窗口
popup_window('添加数据', '添加成功!')
# 关闭窗口
window.destroy()
# 显示表格数据
table.delete('1.0', tk.END)
table.insert(tk.END, df.to_string(index=False))
# 删除数据
def delete_data():
# 创建新窗口
delete_window = tk.Toplevel(root)
delete_window.title('删除数据')
delete_window.geometry('300x100')
# 创建标签和文本框
label = tk.Label(delete_window, text='请输入 ID:')
label.pack()
entry = tk.Entry(delete_window)
entry.pack()
# 创建确认按钮
btn_confirm = tk.Button(delete_window, text='确认', command=lambda: delete_data_confirm(entry.get(), delete_window))
btn_confirm.pack()
# 删除数据确认
def delete_data_confirm(id, window):
# 判断 ID 是否存在
if id not in df['ID'].values:
popup_window('删除数据', 'ID 不存在,请输入正确的 ID!')
else:
# 删除数据
global df
df = df[df['ID'] != id]
# 弹出提示窗口
popup_window('删除数据', '删除成功!')
# 关闭窗口
window.destroy()
# 显示表格数据
table.delete('1.0', tk.END)
table.insert(tk.END, df.to_string(index=False))
# 修改数据
def update_data():
# 创建新窗口
update_window = tk.Toplevel(root)
update_window.title('修改数据')
update_window.geometry('300x100')
# 创建标签和文本框
label1 = tk.Label(update_window, text='请输入 ID:')
label1.pack()
entry1 = tk.Entry(update_window)
entry1.pack()
label2 = tk.Label(update_window, text='请输入新的名称:')
label2.pack()
entry2 = tk.Entry(update_window)
entry2.pack()
# 创建确认按钮
btn_confirm = tk.Button(update_window, text='确认', command=lambda: update_data_confirm(entry1.get(), entry2.get(), update_window))
btn_confirm.pack()
# 修改数据确认
def update_data_confirm(id, name, window):
# 判断 ID 是否存在
if id not in df['ID'].values:
popup_window('修改数据', 'ID 不存在,请输入正确的 ID!')
else:
# 修改数据
global df
df.loc[df['ID'] == id, 'Name'] = name
# 弹出提示窗口
popup_window('修改数据', '修改成功!')
# 关闭窗口
window.destroy()
# 显示表格数据
table.delete('1.0', tk.END)
table.insert(tk.END, df.to_string(index=False))
# 查询数据
def search_data():
# 创建新窗口
search_window = tk.Toplevel(root)
search_window.title('查询数据')
search_window.geometry('300x100')
# 创建标签和文本框
label = tk.Label(search_window, text='请输入 ID:')
label.pack()
entry = tk.Entry(search_window)
entry.pack()
# 创建确认按钮
btn_confirm = tk.Button(search_window, text='确认', command=lambda: search_data_confirm(entry.get(), search_window))
btn_confirm.pack()
# 查询数据确认
def search_data_confirm(id, window):
# 判断 ID 是否存在
if id not in df['ID'].values:
popup_window('查询数据', 'ID 不存在,请输入正确的 ID!')
else:
# 查询数据
data = df[df['ID'] == id]
# 创建新窗口
result_window = tk.Toplevel(root)
result_window.title('查询结果')
result_window.geometry('300x100')
# 创建标签和文本框
label = tk.Label(result_window, text=f'查询结果为:{data.to_string(index=False)}')
label.pack()
# 关闭窗口
window.destroy()
# 绑定按钮事件
btn_import.config(command=import_excel)
btn_add.config(command=add_data)
btn_delete.config(command=delete_data)
btn_update.config(command=update_data)
btn_search.config(command=search_data)
# 显示窗口
root.mainloop()
```
这个示例代码可以导入 Excel 文件并进行数据的添加、删除、修改和查询操作。每次操作后会打开一个新的界面来展示表格数据。你可以根据实际需求进行修改。
阅读全文