PY 做个窗口用PySimpleGUI可以选取电脑路径下的2个表格内相同的时间段数据,在这个窗口里面显示数据并且数据可以点击保存按钮存放到新的表格里面
时间: 2024-03-17 10:43:35 浏览: 52
好的,那我们来一步步实现这个功能。
首先,需要安装 PySimpleGUI 库。可以使用以下命令进行安装:
```
pip install PySimpleGUI
```
接下来,我们需要编写代码来实现该功能。完整代码如下:
```python
import pandas as pd
import PySimpleGUI as sg
# 定义窗口布局
layout = [
[sg.Text('选择第一个表格文件:', size=(20, 1)), sg.Input(key='file1'), sg.FileBrowse()],
[sg.Text('选择第二个表格文件:', size=(20, 1)), sg.Input(key='file2'), sg.FileBrowse()],
[sg.Button('查找相同时间段数据')],
[sg.Table(values=[], headings=[], key='table')],
[sg.Button('保存数据')]
]
# 创建窗口
window = sg.Window('查找相同时间段数据', layout)
# 当窗口打开时执行的代码
while True:
event, values = window.read()
if event == sg.WINDOW_CLOSED:
break
elif event == '查找相同时间段数据':
# 获取用户选择的文件路径
file1 = values['file1']
file2 = values['file2']
# 读取两个表格的数据
df1 = pd.read_excel(file1)
df2 = pd.read_excel(file2)
# 按照时间段合并两个 DataFrame 对象
merged_df = pd.merge(df1, df2, on='time')
# 将合并后的数据显示在表格中
headings = merged_df.columns.tolist()
values = merged_df.values.tolist()
window['table'].update(values=values, headings=headings)
elif event == '保存数据':
# 获取当前显示的数据
table_values = window['table'].get()
# 将数据保存到新的表格中
save_file = sg.popup_get_file('保存文件', save_as=True, default_extension='.xlsx')
if save_file:
save_df = pd.DataFrame(table_values[1:], columns=table_values[0])
save_df.to_excel(save_file, index=False)
sg.popup('保存成功!')
```
运行这段代码,会弹出一个窗口,用户可以在窗口中选择两个表格文件,然后点击“查找相同时间段数据”按钮,程序会读取两个表格文件中的数据,并按照时间段合并它们。合并后的数据会显示在窗口中的表格中。如果用户希望将当前显示的数据保存到新的表格中,可以点击“保存数据”按钮,然后选择保存路径即可。
需要注意的是,这段代码中使用了 Pandas 库来读取和处理表格数据,因此需要确保 Pandas 库已经安装。如果遇到执行出错的情况,可以尝试通过以下命令安装 Pandas 库:
```
pip install pandas
```
另外,为了使窗口能够在用户点击关闭按钮时正常退出,我们使用了一个 while 循环来监听窗口事件。如果检测到窗口关闭事件,则退出循环,程序结束运行。
阅读全文