将按钮的结果变量用作另一个变量

时间:2019-02-27 11:47:48

标签: python pandas tkinter

抱歉,标题有点混乱,我不知道该怎么写。

我遇到以下问题:按下按钮后,我正在使用Tkinter的filedialog函数选择多个csv文件,然后将这些文件作为多个熊猫数据帧来处理。之后,我想在将用于其他按钮的函数中使用那些熊猫数据框,但是我无法将那些数据框置于其初始功能之外。我要尝试执行的主要问题之一是,由于使用了for循环,每次循环发生时,数据帧都会被重写,因此我通常仅以最后一个rt结尾。理想的事情是能够将第二个按钮(convItol)将在选择函数(用于上传文件的那个)中调用的函数放在函数中,但是我不知道是否可以那样做。

到目前为止,这是我的代码:

from tkinter import *
from tkinter import filedialog
import glob, os
from pandas import *
import matplotlib.pyplot as plt
from scipy import stats
import ntpath
import sqlite3
import pandas as pd

#create window
window=Tk()

#textlist
screen=Listbox(window, height=10, width=50)
screen.grid(column=0, row=1, rowspan=4, columnspan=8)

#scrollbar
scrollbar=Scrollbar(window)
scrollbar.grid(row=2, column=8, sticky=S+N)
screen.configure(yscrollcommand=scrollbar.set)
scrollbar.configure(command=screen.yview)

#separator for the buttons
separator=Frame(height=2,bd=1, relief=SUNKEN)
separator.grid(row=2,column=20)


#selectfiles
def select():
    selector=filedialog.askopenfilenames(parent=window,
    initialdir="/", title="Upload")
    for file in selector:
        filename=ntpath.basename(file)
        rt=pandas.read_csv(file, skiprows=6)
        rt.set_index('Peak')
        #rt is the pandas dataframe that I want to use in another function

#select button:
browse=Button(separator, text="Browse", command=select, width=10)
browse.grid(row=0, column=1)

#Conversion ITol function
def ConversionItol():
    #here is where I would like to use the rt pandas dataframe

#Itol conversion Button
convItol=Button(separator, text="Conversion ITol", command=ConversionItol)
convItol.grid(row=1,column=1)
convSty=Button(separator, text="Conversion Sty")
convSty.grid(row=2, column=1)

window.mainloop()

先谢谢了。

1 个答案:

答案 0 :(得分:1)

您可以使用在文件顶部创建的变量。

data = 'whatever'

然后,您只需将这两行添加到select()

global data
data = rt

然后将global data行添加到ConversionItol(),您可以将rt用作data。希望能有所帮助。