从TkInter入口返回值与按钮

问题描述:

Python新手,在这里。我注意到关于从TkInter函数返回值的主题有很多问题,但没有一个解决方案似乎解决了我的问题。从TkInter入口返回值与按钮

我可以成功地将printself.e1pathgetPath.submit以内,但我不能return它到我的代码的其余部分。我在课堂外使用打印语句来测试我是否已成功返回CSV路径。

from tkinter import * 
import tkinter as tk 
class getPath(tk.Tk): 
    def __init__(self): 
     tk.Tk.__init__(self) 
     self.label1 = tk.Label(self, text="CSV Path").grid(row=0, column=0) 
     self.e1 = tk.Entry(self, width=50) 
     self.e1Grid = self.e1.grid(row=0, column=1) 

     self.browse = tk.Button(self, text='Browse', command=self.getCSV).grid(row=0, column=2) 
     self.submit = tk.Button(self, text='Submit', command=self.submit).grid(row=1, column=1) 

    def getCSV(self): 
     self.fileName = filedialog.askopenfilename(filetypes = (('Comma Separated Values', '*.csv'), ('All Files', '*.*')), title = "Choose a CSV File") 
     self.e1.insert(10, self.fileName) 

    def submit(self): 
     self.e1Path = self.e1.get() 
     return self.e1Path 

app = getPath() 
app.mainloop() 
print(app) 
+0

我回答了您的问题吗? –

我想通了!我需要添加一个self.destroy()submit函数。这停止了​​主循环,让我打电话self.e1path以外的功能使用app.e1path。新代码:

from tkinter import * 
import tkinter as tk 
class getPath(tk.Tk): 
    def __init__(self): 
     tk.Tk.__init__(self) 
     self.label1 = tk.Label(self, text="CSV Path").grid(row=0, column=0) 
     self.e1 = tk.Entry(self, width=50) 
     self.e1Grid = self.e1.grid(row=0, column=1) 

     self.browse = tk.Button(self, text='Browse', command=self.getCSV).grid(row=0, column=2) 
     self.submit = tk.Button(self, text='Submit', command=self.submit).grid(row=1, column=1) 

    def getCSV(self): 
     self.fileName = filedialog.askopenfilename(filetypes = (('Comma Separated Values', '*.csv'), ('All Files', '*.*')), title = "Choose a CSV File") 
     self.e1.insert(10, self.fileName) 

    def submit(self): 
     self.e1Path = self.e1.get() 
     self.destroy() 

app = getPath() 
app.mainloop() 
print(app.e1Path)