你現在是一個python專家,請你幫我實現一個GUI窗口,實現異常登記,裏面可以登記數據,查詢歷史記錄,等級資料有異常原因、異常綫別、異常數、責任單位...并且將數據存儲在本地,而且可以更具日期和進行查詢歷史數據
时间: 2024-03-22 22:42:24 浏览: 12
好的,我会给你提供一个基于 Python 的 GUI 框架 Tkinter 的实现方案,用于实现你所描述的异常登记系统。以下是代码实现:
```python
import tkinter as tk
import pandas as pd
class AbnormalRecordSystem:
def __init__(self, master):
self.master = master
self.master.title("异常登记系统")
self.master.geometry("800x600")
self.df = pd.DataFrame(columns=["日期", "异常原因", "异常线别", "异常数", "责任单位"])
self.create_widgets()
def create_widgets(self):
# 创建日期标签和输入框
tk.Label(self.master, text="日期:").grid(row=0, column=0, padx=10, pady=10)
self.date_entry = tk.Entry(self.master)
self.date_entry.grid(row=0, column=1, padx=10, pady=10)
# 创建异常原因标签和输入框
tk.Label(self.master, text="异常原因:").grid(row=1, column=0, padx=10, pady=10)
self.reason_entry = tk.Entry(self.master)
self.reason_entry.grid(row=1, column=1, padx=10, pady=10)
# 创建异常线别标签和输入框
tk.Label(self.master, text="异常线别:").grid(row=2, column=0, padx=10, pady=10)
self.line_entry = tk.Entry(self.master)
self.line_entry.grid(row=2, column=1, padx=10, pady=10)
# 创建异常数标签和输入框
tk.Label(self.master, text="异常数:").grid(row=3, column=0, padx=10, pady=10)
self.num_entry = tk.Entry(self.master)
self.num_entry.grid(row=3, column=1, padx=10, pady=10)
# 创建责任单位标签和输入框
tk.Label(self.master, text="责任单位:").grid(row=4, column=0, padx=10, pady=10)
self.responsible_entry = tk.Entry(self.master)
self.responsible_entry.grid(row=4, column=1, padx=10, pady=10)
# 创建提交按钮和历史记录按钮
tk.Button(self.master, text="提交", command=self.submit).grid(row=5, column=0, padx=10, pady=10)
tk.Button(self.master, text="历史记录", command=self.show_history).grid(row=5, column=1, padx=10, pady=10)
def submit(self):
# 获取表单数据
date = self.date_entry.get()
reason = self.reason_entry.get()
line = self.line_entry.get()
num = self.num_entry.get()
responsible = self.responsible_entry.get()
# 将表单数据添加到 DataFrame 中
self.df = self.df.append({"日期": date, "异常原因": reason, "异常线别": line, "异常数": num, "责任单位": responsible}, ignore_index=True)
# 保存 DataFrame 到本地文件
self.df.to_csv("abnormal_records.csv", index=False)
# 清空表单数据
self.date_entry.delete(0, tk.END)
self.reason_entry.delete(0, tk.END)
self.line_entry.delete(0, tk.END)
self.num_entry.delete(0, tk.END)
self.responsible_entry.delete(0, tk.END)
def show_history(self):
# 从本地文件中加载历史记录
try:
self.df = pd.read_csv("abnormal_records.csv")
except FileNotFoundError:
tk.messagebox.showerror("错误", "未找到历史记录文件!")
return
# 创建历史记录窗口
history_window = tk.Toplevel(self.master)
history_window.title("历史记录")
history_window.geometry("800x600")
# 创建表格控件并显示历史记录
table = pd.DataFrame.to_html(self.df, index=False)
tk.Label(history_window, text=table).pack(padx=10, pady=10)
if __name__ == "__main__":
root = tk.Tk()
app = AbnormalRecordSystem(root)
root.mainloop()
```
这个异常登记系统基于 Tkinter 框架开发,使用了 Pandas 库来保存和加载数据。它提供了一个简单的 GUI 界面,用户可以在界面中输入异常登记信息,提交后会将数据保存到本地文件中。同时,用户也可以查看历史记录,历史记录会以表格的形式显示在一个单独的窗口中。
需要注意的是,这个实现方案只是提供了一个简单的框架,你需要根据自己的需求来调整界面和数据处理逻辑。
另外,这个实现方案没有提供根据日期进行查询历史记录功能。如果你需要实现这个功能,你可以在 `show_history()` 方法中添加一些逻辑来根据日期过滤历史记录,例如:
```python
def show_history(self):
# 从本地文件中加载历史记录
try:
self.df = pd.read_csv("abnormal_records.csv")
except FileNotFoundError:
tk.messagebox.showerror("错误", "未找到历史记录文件!")
return
# 创建历史记录窗口
history_window = tk.Toplevel(self.master)
history_window.title("历史记录")
history_window.geometry("800x600")
# 获取用户输入的日期
date = tk.simpledialog.askstring("查询", "请输入日期(格式:YYYY-MM-DD):")
# 根据日期过滤历史记录
if date:
filtered_df = self.df[self.df["日期"] == date]
else:
filtered_df = self.df
# 创建表格控件并显示历史记录
table = pd.DataFrame.to_html(filtered_df, index=False)
tk.Label(history_window, text=table).pack(padx=10, pady=10)
```
这个修改后的 `show_history()` 方法会弹出一个对话框,提示用户输入日期。如果用户输入了日期,则会根据日期过滤历史记录,否则返回全部历史记录。这样,用户就可以根据日期来查询历史记录了。