Python 正在将参数io的变量创建到pd.read_excel()中

Python 正在将参数io的变量创建到pd.read_excel()中,python,pandas,dataframe,tkinter,Python,Pandas,Dataframe,Tkinter,请参阅。 我正在用Tkinter创建一个GUI,它将自动计算几个字符的最终分数。我对Tkinter也相当陌生。在我的代码中,我正在阅读几个excel表格,这些表格将被创建为数据框架,以便我对每个表格进行适当的计算。我将要阅读的一个excel工作表是一个excel工作表,其中包含一个字符列表,我的团队中的代码用户可以在需要时进入该列表并编辑/添加新字符。当他们运行代码时,将使用任何编辑/添加的字符更新分析。对于这个问题,我将以它为例,称之为filename 理想情况下,我希望在Tkinter中创

请参阅。


我正在用
Tkinter
创建一个GUI,它将自动计算几个字符的最终分数。我对
Tkinter
也相当陌生。在我的代码中,我正在阅读几个excel表格,这些表格将被创建为数据框架,以便我对每个表格进行适当的计算。我将要阅读的一个excel工作表是一个excel工作表,其中包含一个字符列表,我的团队中的代码用户可以在需要时进入该列表并编辑/添加新字符。当他们运行代码时,将使用任何编辑/添加的字符更新分析。对于这个问题,我将以它为例,称之为
filename

理想情况下,我希望在
Tkinter
中创建一个浏览按钮,提示用户查找excel文件,然后将所选文件存储在变量
filename
中以备将来使用。我的代码稍后将嵌入
pd.read\u excel()
,我希望
filename
成为将被读入的excel文件/
io
参数我只是想知道这是否可能。查看其他尝试也不一定能满足我的需求。

这也是我第一次使用Tkinter,但这里有一个我到目前为止拥有的草稿(强调草稿!):

import tkinter as tk
from tkinter import *

class Automation:
    def __init__(self, master):
        self.master = master
        master.title("Test")

        self.label = Label(master, text="Welcome to the Score Automation.\nPlease select the ALC File containing all updated names.")
        self.label.pack()

        self.browse_button_characterlist = Button(master, text="Select File", command=self.askopenfile)
        self.browse_button_characterlist.pack()

        self.close_button = Button(master, text="Close", command=master.quit)
        self.close_button.pack()

    def askopenfile(self):
        root = tk.Tk()
        root.withdraw()
        filename = askopenfilename()

        print(filename)

root = Tk()
my_gui = Automation(root)
root.mainloop()
文件名然后作为参数存储到
pandas.read\u excel()

pd.read_excel(filename, usecols = "B", 
               skiprows = range(0,4), skip_footer = 2)

任何关于订购或如何使用
askopenfile()
的建议都非常好。提前感谢。

您在这里缺少一些东西-什么是对象,什么是模块(如果我了解您的尝试,如何从中提取方法),以及
self的使用。甚至在像根窗口这样的
tk
过程之前。我建议先用Python编写一个教程,然后是
tkinter
。要回答您的问题,请在顶部添加:

#Do not import *, import only what you need.
from tkinter.filedialog import askopenfilename
并更改事件处理程序(我强烈建议将名称更改为在程序中有意义的名称,即
readExcel
):

注意:我删除了您已有的两行
Tk()
,您已经在
self.master
中拥有了一个
Tk
对象。不要做两个,因为它不稳定且资源繁重,而且没有理由做两个(你已经有一个gui应用程序了,为什么要做两个?)


您可能希望向处理程序中添加checks/a try-except块。
filename
excel
成员现在都可以通过
self.
Automation
对象中的任何其他方法使用。

您的问题不清楚-您知道如何获取文件名并将其存储在变量中。你还想做什么?另外,您可能希望在函数调用后使用
self.filename
使对象可以使用文件名。@kabunas编辑了问题正文,表示我询问是否可以将变量存储到
read\u excel()
中,我正在寻找总体建议。我知道如何存储变量。你为什么不做一些类似于
self.excel=pd.read\u excel(filename,usecols=“B”,skiprows=range(0,4),skip\u footer=2)的事情呢
?目前正在计算建议代码行在上述代码中的位置。我想到了使用
filedialog.askopenfilename
,然后实现
pd.read\u excel()
def askopenfile(self):
    #Force specific file types only. Use `self` to make the file name available from any method.
    self.filename = askopenfilename(filetypes=(('xsl','*.xsl'),('xslx','*.xslx')))
    self.excel = pd.read_excel(self.filename, usecols = "B", skiprows = range(0,4), skip_footer = 2)