У меня есть скрипт, который использует Tkinter и pandas, а matplot разделен на 2 функции:
- Первая функция: «getExcel» импортирует файл .csv и преобразует его во фрейм данных .
- Вторая функция: "Calculate_plot" использует этот фрейм данных для выполнения некоторых вычислений и построения графика.
Проблема, с которой я сталкиваюсь: Я невозможно получить доступ к кадру данных из первой функции во вторую.
Код:
global df
import_file_path = filedialog.askopenfilename()
data = pd.read_csv(import_file_path)
lbl = tk.Label(text='File Uploaded ', bg='grey', fg='Black',
font=('helvetica', 10, 'bold'))
lbl.place(relx=0.3, rely=0.35, relwidth=0.4, relheight=0.05)
browseButton_Excel = tk.Button(text='Import Excel File', command=getExcel, bg='green', fg='white',
font=('helvetica', 12, 'bold'))
canvas1.create_window(150, 100, window=browseButton_Excel)
second_frame = tk.Frame(root, bg='#808080', bd=5)
second_frame.place(relx=0.5, rely=0.48, relwidth=0.9, relheight=0.5, anchor='n')
label = tk.Label(second_frame, bg='light blue')
label.place(relx=0.005, rely=0.3, relwidth=0.99, relheight=0.65)
def Calculate_plot():
df = pd.DataFrame(getExcel().data, columns=['Time', 'Current'])
Current = df.loc[:, "Current"]
Time = df.loc[:, "Time"]
y = df.Current
x = df.Time
Charge = trapz(y, x)
ch1 = float(Charge) / 5
Cap = ch1 * 1000000
plt.title('Inrush Current Plot')
plt.plot(df.Time, df.Current)
plt.xlabel('Time [Sec]')
plt.ylabel('Current [A]')
plt.legend()
plt.show()
resultLabel = tk.Label(root, text="The Capacitance is: ")
resultLabel.pack(fill=Cap)
button = tk.Button(second_frame, text='Calculate Capacitance', command=Calculate_plot, bg='green', fg='white', font=('helvetica', 12, 'bold'))
button.place(relx=0.15, rely=0.05, relwidth=0.7, relheight=0.18) ```