我正在使用以下功能将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
答案 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()