Каталог файлов Tkinter для сохранения вывода - PullRequest
0 голосов
/ 11 июля 2020

У меня есть эти функции, которые предлагают пользователю загрузить файл csv через GUI (Tkinter) для выполнения основной c статистики и корреляционной матрицы. Выход сохраняется в рабочем каталоге. Я не хочу указывать каталог в коде, но пользователь сможет выбрать каталог по своему усмотрению. Я хочу изменить этот код, чтобы изменить каталог stati c и дать пользователю некоторую гибкость в выборе места для его сохранения. Пожалуйста помоги. Новое в python

import tkinter as tk
from tkinter import filedialog
import pandas as pd
from pandas import DataFrame
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
import statsmodels.api as sm
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg

root= tk.Tk()
canvas1 = tk.Canvas(root, width = 600, height = 500,  relief = 'raised')
canvas1.pack()

label1 = tk.Label(root, text='EDA')
label1.config(font=('helvetica', 14))
canvas1.create_window(200, 25, window=label1)

label2 = tk.Label(root, text='Number of Clusters:')
label2.config(font=('helvetica', 8))
canvas1.create_window(200, 120, window=label2)

entry1 = tk.Entry (root) 
canvas1.create_window(200, 140, window=entry1)

def getExcel ():

global df
import_file_path = filedialog.askopenfilename()
date_cols = ['TimeStamp']
df = pd.read_csv (import_file_path, parse_dates = date_cols, index_col = 'TimeStamp') 
   


browseButtonExcel = tk.Button(text=" Import Excel File (CSV) ", command=getExcel, bg='green',  fg='white', font=('helvetica', 10, 'bold'))
canvas1.create_window(200, 70, window=browseButtonExcel)

def descriptiv(): #def descriptiv(self, df, path, filename):
    stats = df.describe([.01,.1,.9,.99]).T
    stats['variance'] = df.var()
    stats['pct missing'] = df.isna().mean().round(4) * 100 
    #folder_path = filedialog.askdirectory() # I want to be able to use this to prompt the user to select a directory to save the file
    return stats.to_csv('C:/Users/chall/Desktop/work/descriptive.csv') # I want to change this so user can decide where to save the output

def correl():
    matri = df.corr(method = 'pearson').to_csv('C:/Users/chall/Desktop/work/correlation.csv') #same problem here.
    return matri

processButton2 = tk.Button(text=' Descriptive Statistics',  command= descriptiv, bg='brown', fg='white', font=('helvetica', 10, 'bold'))
canvas1.create_window(200, 200, window=processButton2)  

processButton3 = tk.Button(text=' Correlation Matrix',  command= correl, bg='brown', fg='white', font=('helvetica', 10, 'bold'))
canvas1.create_window(200, 230, window=processButton3)

root.mainloop()

1 Ответ

0 голосов
/ 11 июля 2020

Что касается открытия файла, вы использовали filedialog.askopenfilename () диалогового окна файла, аналогично файловый диалог Tkinter также предоставляет вам параметр filedialog.asksaveasfilename (). Попробуйте это, это позволит пользователю выбрать путь вывода без отображения пути в вашем коде.

...