【问题标题】:Tkinter file directory to save outputtkinter 文件目录保存输出
【发布时间】:2020-07-11 03:57:45
【问题描述】:

我有这些功能提示用户通过 GUI (Tkinter) 加载 csv 文件以执行基本统计和相关矩阵。输出保存在工作目录中。 我不想在代码中指定目录,但如果选择,用户将能够选择目录。我想修改此代码以更改静态目录并为用户提供一些灵活性来选择保存它的位置。请帮忙。 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()

【问题讨论】:

    标签: python python-3.x tkinter tkinter-canvas tkinter-entry


    【解决方案1】:

    至于你使用文件对话框的 filedialog.askopenfilename() 打开一个文件,同样 Tkinter 文件对话框也为你提供了一个选项 filedialog.asksaveasfilename()。试试这个,它将允许用户选择输出路径而不在代码中显示路径。

    【讨论】:

    • 嗨 Gaurav,我对 python 很陌生,所以我很难将输出传递给调用 tkinter 的 filedialog.savesfilename()。任何帮助将不胜感激。
    • stats.to_csv('C:/Users/chall/Desktop/work/descriptive.csv') 将其替换为 stats.askopenfilename()
    • 另外,请确保从文件对话框中导入它
    猜你喜欢
    • 2021-01-10
    • 1970-01-01
    • 2019-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-10
    • 2020-12-08
    相关资源
    最近更新 更多