抱歉,标题有点混乱,我不知道该怎么写。
我遇到以下问题:按下按钮后,我正在使用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()
先谢谢了。
答案 0 :(得分:1)
您可以使用在文件顶部创建的变量。
data = 'whatever'
然后,您只需将这两行添加到select()
:
global data
data = rt
然后将global data
行添加到ConversionItol()
,您可以将rt
用作data
。希望能有所帮助。