将 tkinter openfilename 传递给实例变量

卢卡·康索特

检查:

python传递变量tkinter

Tkinter - 如何将实例变量传递给另一个类?

和其他网络资源,但没有找到解决方案。

我有一个 Tkinter 按钮来打开文件:

import tkinter as tk
from tkinter import filedialog as fd
from myClass import my_function 

class select_file:
def __init__(self):
    self.root = tk.Tk()
    self.filename = ""

    tk.Button(self.root, text="Browse", command=self.open).pack()
    self.root.mainloop()

def open(self):
    filetypes = (('LOG files', '*.LOG'), ('All files', '*.*'))
    self.filename = fd.askopenfilename(title='open LOG file', filetypes=filetypes)

    
    self.root.destroy()
    print(self.filename)
    return self.filename

这很好用,因为我可以以正确的方式获取文件路径。

输出:

C:/Users/xxxx/xxxxx/Dataset/SC180918.LOG

我的问题是如何将选定的文件名作为实例变量传递给同一项目中但在另一个文件 (myClass.py) 中的其他函数:

class my_function:
log_frame = pd.DataFrame()


def __init__(self, file):
    self.file = file

 def create_df(self):
    myClass.log_frame = pd.read_table(self.file, sep=';', index_col='TimeStamp', parse_dates=True)
    return myClass.log_frame

我的任务是将文件传递给 create_df。我尝试了几个我不会发布的代码以避免混淆和不工作的代码。

米科萨卡

由于文件很重要,我生成了两个 python 文件,如下所示:

我的类.py:

class my_function:
    def __init__(self, file):
        self.file = file
    def create_df(self):
        print("filename in my_function is ",self.file)

测试我.py:

import tkinter as tk
from tkinter import filedialog as fd
from myClass import my_function 

class select_file:
    def __init__(self):
        self.root = tk.Tk()
        self.filename = ""
        tk.Button(self.root, text="Browse", command=self.open).pack()
        self.root.mainloop()
    def open(self):
        filetypes = (('LOG files', '*.LOG'), ('All files', '*.*'))
        self.filename = fd.askopenfilename(title='open LOG file', filetypes=filetypes)    
        self.root.destroy()
        print("filename in select_file is ",self.filename)
        return self.filename

sfClass = select_file() # select filename by Browse
filename = sfClass.filename # get filename from the class
mfClass = my_function(filename) # pass it to the class
mfClass.create_df()

如果我选择 testMe.py 文件,这里是输出:

filename in select_file is  C:/Users/XXX/XXX/SOquestions/testMe.py
filename in my_function is  C:/Users/XXX/XXX/SOquestions/testMe.py

结果,文件名已成功传递给my_function.

我也测试如下:

print(mfClass.file)

它打印: C:/Users/XXX/XXX/SOquestions/testMe.py

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章