tkinter - 在 askopenfile 期间检索文件名
tkinter - retrieve file name during askopenfile
我有一个用 Python 和 tkinter 制作的文本编辑器。
这是我的'open file'方法:
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()
我想将 window 标题设置为文件名。目前我正在使用任何 askopenfile return 作为文件名,但是这个 returns 例如:
<_io.TextIOWrapper 名称='/Users/user/Desktop/file.txt' 模式='r' 编码='UTF-8'>
这当然不是很好。我想要任何 askopenfilename return。但是,如果我调用 askopenfile 和 askopenfilename,用户必须使用 'open file' 对话框两次。
没有第二个对话框,有什么方法可以检索文件名吗?
如果没有,请问有没有人使用 RegEx 过滤掉文件名。如果您熟悉 RegEx,最好的文件名当然是 'file.txt' 而不是 '/Users/user/Desktop/file.txt'。不过不管怎样都很好。
您正在传递文件 object,因此您会看到对文件 object 的引用作为标题,您可以使用 [=11= 从文件 object 中获取名称].
如果您只需要基本名称,请使用 os.path.basename:
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()
我有一个用 Python 和 tkinter 制作的文本编辑器。
这是我的'open file'方法:
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()
我想将 window 标题设置为文件名。目前我正在使用任何 askopenfile return 作为文件名,但是这个 returns 例如:
<_io.TextIOWrapper 名称='/Users/user/Desktop/file.txt' 模式='r' 编码='UTF-8'>
这当然不是很好。我想要任何 askopenfilename return。但是,如果我调用 askopenfile 和 askopenfilename,用户必须使用 'open file' 对话框两次。
没有第二个对话框,有什么方法可以检索文件名吗?
如果没有,请问有没有人使用 RegEx 过滤掉文件名。如果您熟悉 RegEx,最好的文件名当然是 'file.txt' 而不是 '/Users/user/Desktop/file.txt'。不过不管怎样都很好。
您正在传递文件 object,因此您会看到对文件 object 的引用作为标题,您可以使用 [=11= 从文件 object 中获取名称].
如果您只需要基本名称,请使用 os.path.basename:
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()