Python tkinter-在askopenfile期间检索文件名

Python tkinter-在askopenfile期间检索文件名,python,regex,tkinter,filenames,Python,Regex,Tkinter,Filenames,我有一个用Python和tkinter制作的文本编辑器 这是我的“打开文件”方法: def onOpen(self): file = askopenfile(filetypes=[("Text files", "*.txt")]) txt = file.read() self.text.delete("1.0", END) root.title(file) self.text.insert(1.0, txt)

我有一个用Python和tkinter制作的文本编辑器

这是我的“打开文件”方法:

def onOpen(self):
        file = askopenfile(filetypes=[("Text files", "*.txt")])
        txt = file.read()
        self.text.delete("1.0", END)
        root.title(file)
        self.text.insert(1.0, txt)
        file.close()
我想将窗口标题设置为文件名。目前,我使用askopenfile return作为文件名,但这会返回例如:

当然,这不是很好。我想要askopenfilename返回的任何文件。但是如果我调用askopenfile和askopenfilename,用户必须使用“打开文件”对话框两次

有没有办法在没有第二个对话框的情况下检索文件名


如果没有,是否有人使用正则表达式过滤掉文件名。如果你对正则表达式很在行,最好的文件名当然是“file.txt”而不是“/Users/user/Desktop/file.txt”。不过,无论哪种方式都可以。

您正在传递文件对象,以便将对文件对象的引用视为标题,您可以使用
name=root.title(file.name)
从文件对象获取名称

如果只需要基本名称,请使用:

import os
name = os.path.basename(file.name)
from tkinter import *
from tkinter import filedialog as fd 
from PIL import ImageTk, Image
import os

def openfile():
   filepath= fd.askopenfilename()
   onlyfilename = os.path.basename(filepath)
   mylabel.config(text=onlyfilename)

myscreen=Tk()
filebutton=Button(text='choose your file',command=openfile)
filebutton.grid(row=0,column=2)
mylabel = Label(myscreen, text="You chossen file path will be displayed here")
mylabel.grid(row=1,column=2)
myscreen.mainloop()