用TK库和Pandas库 写一个 上传3个文件后并且结束的界面
时间: 2024-02-16 21:59:37 浏览: 71
好的,以下是一个使用tkinter和pandas库编写的上传3个文件的界面,上传完毕后可以点击“结束”按钮关闭程序。
```python
import tkinter as tk
from tkinter import filedialog
import pandas as pd
class App:
def __init__(self, master):
self.master = master
master.title("上传3个Excel文件")
# 创建上传按钮
self.upload_button1 = tk.Button(master, text="上传文件1", command=self.upload_file1)
self.upload_button1.pack()
self.upload_button2 = tk.Button(master, text="上传文件2", command=self.upload_file2)
self.upload_button2.pack()
self.upload_button3 = tk.Button(master, text="上传文件3", command=self.upload_file3)
self.upload_button3.pack()
# 创建结束按钮
self.stop_button = tk.Button(master, text="结束", command=self.stop)
self.stop_button.pack()
# 创建结果文本框
self.result_text = tk.Text(master)
self.result_text.pack()
# 设置上传的文件名
self.file_name1 = None
self.file_name2 = None
self.file_name3 = None
# 设置是否停止程序的标志
self.stop_flag = False
def upload_file1(self):
# 打开文件对话框
self.file_name1 = filedialog.askopenfilename(filetypes=[('Excel files', '*.xlsx')])
def upload_file2(self):
# 打开文件对话框
self.file_name2 = filedialog.askopenfilename(filetypes=[('Excel files', '*.xlsx')])
def upload_file3(self):
# 打开文件对话框
self.file_name3 = filedialog.askopenfilename(filetypes=[('Excel files', '*.xlsx')])
def start(self):
# 如果有文件没有上传,则提示用户上传文件
if not self.file_name1 or not self.file_name2 or not self.file_name3:
self.result_text.insert(tk.END, "请上传所有文件!\n")
return
# 读取第一个Excel表格数据
df1 = pd.read_excel(self.file_name1)
# 读取第二个Excel表格数据
df2 = pd.read_excel(self.file_name2)
# 读取第三个Excel表格数据
df3 = pd.read_excel(self.file_name3)
# 计算第一个表格的A列和B列的差值
df1['A-B'] = df1['A'] - df1['B']
# 计算第二个表格的A列和B列的差值
df2['A-B'] = df2['A'] - df2['B']
# 计算第三个表格的A列和B列的差值
df3['A-B'] = df3['A'] - df3['B']
# 合并三个表格
df = pd.concat([df1, df2, df3])
# 输出结果
self.result_text.insert(tk.END, str(df[['A', 'B', 'A-B']]) + "\n")
# 如果停止按钮没有被点击,则继续运行程序
if not self.stop_flag:
self.master.after(1000, self.start)
def stop(self):
# 设置停止程序的标志
self.stop_flag = True
root = tk.Tk()
app = App(root)
root.mainloop()
```
在这个代码中,我们首先创建了一个名为`App`的类,它继承自`tkinter`库中的`Frame`类。在`App`类的`__init__`方法中,我们创建了一个窗口,并添加了3个上传按钮和一个结束按钮。上传按钮被点击时,程序会打开文件对话框,让用户选择要上传的Excel文件。当结束按钮被点击时,程序会设置一个停止标志,停止程序的运行。在`start`方法中,我们会分别读取3个Excel表格数据,并计算它们的A列和B列的差值,然后将3个表格合并成一个表格,并将结果输出到文本框中。如果停止按钮没有被点击,则程序会每1秒钟运行一次计算程序。
需要注意的是,你需要将`your_excel_file_name.xlsx`替换成你实际的Excel文件名,并且确保这些文件与Python代码在同一目录下。
希望这个代码对你有所帮助!
阅读全文