[英]pass tkinter openfilename to a instance variable
檢查:
Tkinter - 如何將實例變量傳遞給另一個 class?
和其他 web 資源,但沒有找到解決方案。
我有一個 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
這很好,因為我可以以正確的方式獲取文件路徑。
Output:
C:/Users/xxxx/xxxxx/Dataset/SC180918.LOG
我的問題是如何將選定的文件名作為實例變量傳遞給同一項目中的其他 function 但在另一個文件(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。 我嘗試了幾個我不會發布的代碼,以避免混淆和不工作的代碼。
我會這樣做;
sfClass = select_file() # select filename by Browse
filename = sfClass.filename # get filename from the class
mfClass = my_function(filename) # pass it to the class
由於文件很重要,我生成了兩個 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()
這是 output 如果我 select 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.