使用 Python 3 和 tkinter 写一个表格处理程序,GUI界面为:2个文本框2个按钮,按钮名称分别叫导入表格、处理表格。当点击导入按钮时,导入要处理的表格,将路径存储到文本框中。点击处理按钮时,遍历第三个工作表到最后一个工作表,获取工作表中第4行开始,依次填入B列和C列,处理完成后在第二个文本框中显示处理完成。
时间: 2024-02-12 14:07:00 浏览: 64
好的,我来帮您解决这个问题。
首先,需要安装 tkinter 库,您可以通过以下命令安装:
```
pip install tkinter
```
然后,您可以使用以下代码实现您的需求:
```python
import tkinter as tk
import pandas as pd
class TableProcessor:
def __init__(self, master):
self.master = master
self.master.geometry('400x150')
self.master.title('表格处理程序')
self.filepath = tk.StringVar()
self.result = tk.StringVar()
self.filepath_label = tk.Label(self.master, text='表格路径:').grid(row=0, column=0)
self.filepath_entry = tk.Entry(self.master, textvariable=self.filepath, width=30).grid(row=0, column=1)
self.import_button = tk.Button(self.master, text='导入表格', command=self.import_table).grid(row=0, column=2)
self.result_label = tk.Label(self.master, text='处理结果:').grid(row=1, column=0)
self.result_entry = tk.Entry(self.master, textvariable=self.result, width=30).grid(row=1, column=1)
self.process_button = tk.Button(self.master, text='处理表格', command=self.process_table).grid(row=1, column=2)
def import_table(self):
filepath = tk.filedialog.askopenfilename()
self.filepath.set(filepath)
def process_table(self):
filepath = self.filepath.get()
if not filepath:
tk.messagebox.showerror('错误', '请先导入表格')
return
try:
df = pd.read_excel(filepath, sheet_name=None, header=None)
except:
tk.messagebox.showerror('错误', '表格读取失败')
return
for sheet_name in df:
sheet = df[sheet_name]
for i in range(3, sheet.shape[0]):
sheet.iloc[i, 1] = sheet.iloc[i, 3]
sheet.iloc[i, 2] = sheet.iloc[i, 3]
df[sheet_name] = sheet
new_filepath = filepath.replace('.xlsx', '_processed.xlsx')
try:
with pd.ExcelWriter(new_filepath) as writer:
for sheet_name in df:
df[sheet_name].to_excel(writer, sheet_name=sheet_name, header=None, index=None)
except:
tk.messagebox.showerror('错误', '表格写入失败')
return
self.result.set('处理完成,结果保存在:{}'.format(new_filepath))
root = tk.Tk()
TableProcessor(root)
root.mainloop()
```
在这段代码中,我们首先创建了一个 `TableProcessor` 类,它继承自 `tkinter.Frame` 类,用于实现表格处理的功能。
在 `__init__` 方法中,我们创建了两个 `StringVar` 类型的变量 `filepath` 和 `result`,用于存储表格路径和处理结果。
然后,我们创建了四个控件:两个标签、两个文本框、两个按钮,分别用于显示标签、输入表格路径、显示处理结果、导入表格、处理表格。
在 `import_table` 方法中,我们使用 `tkinter.filedialog` 模块中的 `askopenfilename` 方法,选择要处理的表格文件,并将其路径存储到 `filepath` 变量中。
在 `process_table` 方法中,我们首先获取 `filepath` 变量中的表格路径,然后使用 pandas 库中的 `read_excel` 方法读取表格数据,并遍历每个工作表中的数据,将第四行开始的第三列数据填入第二列和第三列中。
最后,我们将处理后的表格保存到一个新的文件中,并将文件路径存储到 `result` 变量中。
最后,我们创建一个 `tkinter.Tk` 对象,实例化 `TableProcessor` 类,并调用 `mainloop` 方法运行程序。
这样,就实现了一个简单的表格处理程序。
阅读全文