【问题标题】:How To Create A Simple GUI For Taking 2 Excel Files and Uploading Them Into My Script如何创建一个简单的 GUI 来获取 2 个 Excel 文件并将它们上传到我的脚本中
【发布时间】:2020-05-04 16:15:16
【问题描述】:

我有一个脚本,它采用两个带有两个数据集的 excel 文件并将它们连接起来并转换生成的单个数据帧的各个方面。我在 Jupyter Notebook 中创建了这个脚本。我希望我为其构建此脚本的人能够使用此脚本而无需与 Python 交互。我试图弄清楚如何创建一个 GUI 来浏览一个文件并允许您引入两个 Excel 工作表,然后将它们传递给脚本以作为数据框引入。

目前我从 PySimpleGUI 复制了一些代码,允许我浏览和选择两个文件。但是我仍然不确定如何将输入从 GUI 传递到我的原始脚本进行转换。任何建议将不胜感激!

'''

读取excel表格

import PySimpleGUI as sg

来自 PySimpleGUI 的 GUI 代码

sg.theme('Light Blue 2')

layout = [[sg.Text('Enter 2 files to comare')],
          [sg.Text('File 1', size=(8, 1)), sg.Input(), sg.FileBrowse()],
          [sg.Text('File 2', size=(8, 1)), sg.Input(), sg.FileBrowse()],
          [sg.Submit(), sg.Cancel()]]
print(layout[2])
window = sg.Window('File Compare', layout)

event, values = window.read()
window.close()

print(f'You clicked {event}')
print(layout[2])

原始代码

df1 = pd.read_excel("C:/Users/mcket747-es/Documents/highschoolData/Fall Spring 2019 Summer 2020 Number 3 .xls")

df2 = pd.read_excel("C:/Users/mcket747-es/Documents/highschoolData/Summer 2019 Number 3.xls")

合并/连接数据帧并删除任何重复的 roecords

df_merged = pd.concat([df1, df2])
df_merged.drop_duplicates(inplace=True)

'''

【问题讨论】:

    标签: python excel pandas user-interface pysimplegui


    【解决方案1】:

    我认为您需要做的是创建一个 mainloop 而不是一次性窗口。另外,您应该使用更复杂的布局,每个操作都有一个按钮,并编写后端代码,以允许用户执行合并、裁剪等多项操作。

    看看 PySimpleGUI Cookbook - Persistent Window

    【讨论】:

      【解决方案2】:

      试试这个,

      import PySimpleGUI as sg
      
      sg.theme('Light Blue 2')
      
      layout = [[sg.Text('Enter 2 files to comare')],
                [sg.Text('File 1', size=(8, 1)), sg.Input(key='Input_1'), sg.FileBrowse()],
                [sg.Text('File 2', size=(8, 1)), sg.Input(key='Input_2'), sg.FileBrowse()],
                [sg.Submit(), sg.Cancel()]]
      
      window = sg.Window('File Compare', layout)
      
      while True:
          event, values = window.read()
          if event in (sg.WINDOW_CLOSED, "Cancel"):
              break
          elif event == 'Submit':
              file_1, file_2 = values['Input_1'], values['Input_2']
              if '' not in [file_1, file_2]:
                  # You may need more checks if files exist, if excel files, ...
                  # do Excel job here.
                  pass
      
      window.close()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-02-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-06
        相关资源
        最近更新 更多