PY 做个窗口用PySimpleGUI可以选取电脑路径下的2个表格内相同的时间段数据,在这个小窗口里面显示数据并且数据可以点击保存按钮存放到新的表格里面
时间: 2024-03-17 22:45:04 浏览: 69
好的,以下是一个使用 PySimpleGUI 实现的代码示例,可以实现你的需求:
```python
import PySimpleGUI as sg
import pandas as pd
# 定义窗口布局
layout = [
[sg.Text('选择表格文件')],
[sg.Input(), sg.FileBrowse(key='file_1'), sg.Text('表格1')],
[sg.Input(), sg.FileBrowse(key='file_2'), sg.Text('表格2')],
[sg.Button('查找')],
[sg.Text('查找结果:')],
[sg.Multiline(size=(60, 10), key='result')],
[sg.Button('保存结果')]
]
# 创建窗口
window = sg.Window('查找表格数据', layout)
# 读取数据并查找相同时间段的数据
def find_data(file_1, file_2):
try:
# 读取表格数据
df_1 = pd.read_excel(file_1)
df_2 = pd.read_excel(file_2)
# 找到相同时间段的数据
df = pd.merge(df_1, df_2, on='时间', how='inner')
# 返回查找结果
return df.to_string(index=False)
except Exception as e:
return str(e)
# 事件循环
while True:
event, values = window.read()
if event == sg.WINDOW_CLOSED:
break
elif event == '查找':
# 获取用户选择的文件路径
file_1 = values['file_1']
file_2 = values['file_2']
# 查找数据
result = find_data(file_1, file_2)
# 在窗口中显示查找结果
window['result'].update(result)
elif event == '保存结果':
# 获取查找结果
result = window['result'].get()
# 弹出选择保存路径的窗口
file_path = sg.popup_get_file('保存结果', save_as=True, file_types=(('Excel 文件', '*.xlsx'), ))
# 如果用户选择了保存路径,则将查找结果保存到文件中
if file_path:
try:
with pd.ExcelWriter(file_path) as writer:
pd.read_csv(pd.compat.StringIO(result)).to_excel(writer, index=False, sheet_name='Sheet1')
sg.popup('保存成功!')
except Exception as e:
sg.popup_error(f'保存失败:{str(e)}')
else:
sg.popup('取消保存!')
# 关闭窗口
window.close()
```
这个窗口中包含两个文件选择框和一个“查找”按钮,当用户点击“查找”按钮时,程序会读取用户选择的两个表格文件,并查找相同时间段的数据,并在窗口中显示查找结果。用户可以点击“保存结果”按钮将查找结果保存到新的 Excel 文件中。
阅读全文