Графический интерфейс браузера файлов для чтения пути к файлу

#python #csv #matplotlib #pysimplegui

Вопрос:

Я должен построить график с помощью matplotlib, прочитав CSV-файл из pandas. Кроме того, мне нужно ввести путь к файлу вне кода python вместо ввода внутри pd.read_csv('file path) . Поэтому, чтобы это произошло, мне нужно создать графический интерфейс, используя модуль PySimpleGUI. Но я застрял в середине того, чтобы не вводить имя файла в программу. Полный код приведен ниже:

 import PySimpleGUI as sg
sg.theme("DarkTeal2")
layout = [[sg.T("")], [sg.Text("Choose a file: "), sg.Input(), sg.FileBrowse(key="-IN-")],[sg.Button("Submit")]]

###Building Window
window = sg.Window('My File Browser', layout, size=(600,150))
    
while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED or event=="Exit":
        break
    elif event == "Submit":
        print(values["-IN-"])
 

Это код для диалогового окна

Код для моего построения выглядит следующим образом :

 import pandas as pd
from matplotlib import pyplot as plt
#Reading the CSV file
ds = pd.read_csv(r"filename.csv")

#Input of required value of time
start_row = int(input('Please enter starting time(in ms): '))
end_row =int(input('Please enter ending time(in ms): '))

if start_row>end_row or start_row==end_row :
    print("Please Enter the end time greater than the start time!")


else:
#Plotting of the graph
    print(plt.plot(ds.iloc[start_row:(end_row 1)]))
    plt.xlabel('Milliseconds')
    plt.ylabel('TCMD')
    plt.grid()
    plt.savefig(r"path")    #To save the plot as a jpeg file
    plt.show()
    ds.describe()

#Detailed insights on the data
print(ds.iloc[start_row:(end_row 1)].describe())
 

Пожалуйста, помогите мне с решением.

Комментарии:

1. [sg.Text("Choose a file: "), sg.Input(key="-IN-"), sg.FileBrowse()], , получите filename = values['-IN-'] после нажатия кнопки Submit , после закрытия окна, затем ds = pd.read_csv(filename) .

2. Я уже пробовал это, но есть ошибка, показывающая, что значения не определены

3. Что за полное сообщение об ошибке ?

4. Ошибка имени: имя «значения» не определено

5. Может быть, код не такой, как вы опубликовали ?

Ответ №1:

Пример кода для получения имени файла, или вы можете позвонить filename = sg.popup_get_file("Choose a file: ", file_types=(("ALL CSV Files", "*.csv"), ("ALL Files", "*.*"), )) напрямую.

 import PySimpleGUI as sg


sg.theme("DarkTeal2")

layout = [
    [sg.T("")],
    [sg.Text("Choose a file: "),
     sg.Input(key="-IN-"),
     sg.FileBrowse(file_types=(("ALL CSV Files", "*.csv"), ("ALL Files", "*.*"), ))],
    [sg.Button("Submit")],
]

window = sg.Window('My File Browser', layout, size=(600,150))

filename = ""
while True:
    event, values = window.read()
    if event in (sg.WIN_CLOSED, "Exit"):
        break
    elif event == "Submit":
        filename = values['-IN-']
        break

window.close()
print(filename)