打印当前选择的文件名

时间:2019-03-07 21:39:49

标签: python-3.x tkinter

我正在使用以下功能将Label的文本设置为文件名 我刚刚选择了,但是我想获取我当前选择的文件的名称,然后从对话框中取消或打开该文件 有没有办法通过使用tkinter或任何其他框架/库来做到这一点 这是代码

 def pick_csv(self):
     filename = filedialog.askopenfilename()
     filelabel.config(text=filename)
     #filelabel should get the name of the selected file 
     #before closing the dialog 

1 个答案:

答案 0 :(得分:1)

我认为您无法使用本机askopenfilename来实现这一目标。但是您可以编写自己的类,该类继承自FileDialog。看起来很丑,需要在布局上做一些工作。

from tkinter import *
from tkinter import filedialog
import os

root = Tk()

a = Label(root,text="Waiting for selection")
a.pack()

class CustomDialog(filedialog.FileDialog):
    def __init__(self,master,path=""):
        filedialog.FileDialog.__init__(self,master)
        self.files.bind("<Button-1>",self.set_label)
        self.selected = None
        self.go(path)

    def set_label(self,*args):
        a.config(text=self.files.get(self.files.curselection()))
        self.selected = os.path.join(self.directory, self.files.get(self.files.curselection()))

    def cancel_command(self, event=None):
        self.selected = None
        self.quit()

def click():
    f = CustomDialog(root)
    if f.selected:
        print (f.selected)

b = Button(root,text="Browse",command=click)
b.pack()

root.mainloop()