python编写一个界面,选择excel数据导入,对数据进行查询、删除、添加、修改。每次操作新打开一个界面
时间: 2024-01-24 13:04:24 浏览: 164
好的,这个需求可以通过 Python 的 tkinter 模块和 pandas 库来实现。以下是一个简单的代码示例:
```python
import tkinter as tk
import pandas as pd
class ExcelEditor:
def __init__(self, master):
self.master = master
self.master.title("Excel Editor")
# 创建菜单栏
menu_bar = tk.Menu(self.master)
self.master.config(menu=menu_bar)
# 创建文件菜单
file_menu = tk.Menu(menu_bar)
file_menu.add_command(label="打开", command=self.open_file)
file_menu.add_separator()
file_menu.add_command(label="退出", command=self.master.quit)
menu_bar.add_cascade(label="文件", menu=file_menu)
# 创建操作菜单
edit_menu = tk.Menu(menu_bar)
edit_menu.add_command(label="查询", command=self.search_data)
edit_menu.add_command(label="删除", command=self.delete_data)
edit_menu.add_command(label="添加", command=self.add_data)
edit_menu.add_command(label="修改", command=self.modify_data)
menu_bar.add_cascade(label="操作", menu=edit_menu)
# 创建文本框
self.text = tk.Text(self.master)
self.text.pack()
def open_file(self):
# 打开 Excel 文件
file_path = tk.filedialog.askopenfilename(filetypes=[("Excel Files", "*.xlsx")])
if file_path:
self.df = pd.read_excel(file_path)
self.text.insert("end", "文件已导入\n")
def search_data(self):
# 查询数据
if not hasattr(self, "df"):
self.text.insert("end", "请先导入数据\n")
return
search_window = tk.Toplevel(self.master)
search_window.title("查询数据")
# 创建查询框
self.search_var = tk.StringVar()
search_entry = tk.Entry(search_window, textvariable=self.search_var)
search_entry.pack()
# 创建查询按钮
search_button = tk.Button(search_window, text="查询", command=self.do_search)
search_button.pack()
def do_search(self):
# 执行查询
keyword = self.search_var.get()
result = self.df[self.df.apply(lambda x: keyword in str(x), axis=1)]
self.show_result(result)
def delete_data(self):
# 删除数据
if not hasattr(self, "df"):
self.text.insert("end", "请先导入数据\n")
return
delete_window = tk.Toplevel(self.master)
delete_window.title("删除数据")
# 创建删除框
self.delete_var = tk.StringVar()
delete_entry = tk.Entry(delete_window, textvariable=self.delete_var)
delete_entry.pack()
# 创建删除按钮
delete_button = tk.Button(delete_window, text="删除", command=self.do_delete)
delete_button.pack()
def do_delete(self):
# 执行删除
index = self.df[self.df.apply(lambda x: self.delete_var.get() in str(x), axis=1)].index
self.df.drop(index, inplace=True)
self.show_result(self.df)
def add_data(self):
# 添加数据
if not hasattr(self, "df"):
self.text.insert("end", "请先导入数据\n")
return
add_window = tk.Toplevel(self.master)
add_window.title("添加数据")
# 创建添加框
self.add_var = tk.StringVar()
add_entry = tk.Entry(add_window, textvariable=self.add_var)
add_entry.pack()
# 创建添加按钮
add_button = tk.Button(add_window, text="添加", command=self.do_add)
add_button.pack()
def do_add(self):
# 执行添加
new_data = pd.DataFrame([self.add_var.get().split(",")], columns=self.df.columns)
self.df = pd.concat([self.df, new_data], ignore_index=True)
self.show_result(self.df)
def modify_data(self):
# 修改数据
if not hasattr(self, "df"):
self.text.insert("end", "请先导入数据\n")
return
modify_window = tk.Toplevel(self.master)
modify_window.title("修改数据")
# 创建修改框
self.modify_var = tk.StringVar()
modify_entry = tk.Entry(modify_window, textvariable=self.modify_var)
modify_entry.pack()
# 创建修改按钮
modify_button = tk.Button(modify_window, text="修改", command=self.do_modify)
modify_button.pack()
def do_modify(self):
# 执行修改
index = self.df[self.df.apply(lambda x: self.modify_var.get().split(",")[0] in str(x), axis=1)].index
self.df.iloc[index] = self.modify_var.get().split(",")
self.show_result(self.df)
def show_result(self, result):
# 显示结果
result_window = tk.Toplevel(self.master)
result_window.title("查询结果")
# 创建表格
table = tk.Text(result_window)
table.pack()
table.insert("end", result.to_string(index=False))
if __name__ == "__main__":
root = tk.Tk()
editor = ExcelEditor(root)
root.mainloop()
```
这个程序会在打开后显示一个主窗口,菜单栏中有“文件”和“操作”两个选项。在“文件”选项中可以选择打开 Excel 文件,只支持 .xlsx 格式的文件。在“操作”选项中可以进行查询、删除、添加和修改操作,每个操作会在新的窗口中打开。查询操作会在新窗口中显示查询结果,其它操作会在原窗口中显示操作结果。注意,这个示例程序只实现了最基本的功能,还有很多需要改进的地方。
阅读全文