csv文件查找工具(一)

csv文件查找工具(一)_第1张图片
自己写的小工具,查询csv文件前三列的数据互查,
主要目的是 组sql 需要这三个数据互查,
当然从数据库查的更快,
但数据库的连接需要验证权限,能自己搞,先自己搞
速度待优化,没时间搞了,两个同时运行。
使用的时候自己替换一下 2024年****.csv文件

写完检查,发现可以直接用excel筛选,excel查找找不到,得用excel筛选,糙。
csv文件查找工具(一)_第2张图片

import tkinter as tk
from tkinter import ttk, scrolledtext
import pandas as pd

class CSVQueryApp:
    def __init__(self, root):
        self.root = root
        self.root.title("CSV查询工具")
        self.root.grid_propagate(False)  # 禁用grid的自适应大小

        # 设置窗口初始大小和位置
        initial_width = 800
        initial_height = 600
        screen_width = root.winfo_screenwidth()
        screen_height = root.winfo_screenheight()
        x_position = (screen_width - initial_width) // 2
        y_position = (screen_height - initial_height) // 2
        self.root.geometry(f"{initial_width}x{initial_height}+{x_position}+{y_position}")

        # 输入框
        self.entry_label = ttk.Label(root, text="输入查询数据:")
        self.entry_label.grid(row=0, column=0, padx=10, pady=10)
        self.entry_var = tk.StringVar()
        self.entry = ttk.Entry(root, textvariable=self.entry_var)
        self.entry.grid(row=0, column=1, padx=10, pady=10)

        # 查询按钮
        self.query_button = ttk.Button(root, text="查询", command=self.query_csv)
        self.query_button.grid(row=0, column=2, padx=10, pady=10)

        # 结果显示框
        self.result_text = scrolledtext.ScrolledText(root, wrap=tk.WORD)
        self.result_text.grid(row=1, column=0, columnspan=3, padx=10, pady=10, sticky="nsew")  # 使用sticky使其铺满空间

        # 配置窗口大小调整事件
        root.bind("", self.on_window_resize)

        # 设置网格的调整权重
        root.columnconfigure(0, weight=1)
        root.columnconfigure(1, weight=1)
        root.columnconfigure(2, weight=1)
        root.rowconfigure(1, weight=1)

    def query_csv(self):
        # 从CSV文件中查询数据
        query_data = self.entry_var.get()
        if query_data:
            try:
                csv_data = pd.read_csv("2024年****.csv")  # 替换为你的CSV文件路径
                result = csv_data[csv_data.apply(lambda row: query_data in str(row), axis=1)]
                self.display_result(result.iloc[:, :3])  # 仅保留前三列数据
            except Exception as e:
                self.display_result(f"错误: {str(e)}")
        else:
            self.display_result("请输入查询数据")

    def display_result(self, result):
        self.result_text.delete(1.0, tk.END)  # 清空之前的结果
        if isinstance(result, pd.DataFrame):
            self.result_text.insert(tk.END, result.to_string(index=False))
        else:
            self.result_text.insert(tk.END, str(result))

    def on_window_resize(self, event):
        # 窗口大小调整事件处理
        new_width = event.width - 20  # 调整为合适的宽度,可以根据需要调整
        new_height = event.height - 100  # 调整为合适的高度,可以根据需要调整
        self.result_text.config(width=new_width, height=new_height)

if __name__ == "__main__":
    root = tk.Tk()
    app = CSVQueryApp(root)
    root.mainloop()

你可能感兴趣的:(python小工具,python)