我很抱歉标题不清楚,我真的不知道怎么说,但我想在python中创建一个文本编辑器。我想获取用户打开或保存在python中的文件的文件名:
def openFile():
file = filedialog.askopenfile(parent=main_window, mode='rb', title='Select a file')
contents = file.read()
textArea.delete('1.0', END)
textArea.insert('1.0', contents)
file.close()
这里用户获得一个对话框来选择他想要打开的文件。但是如何获取他选择的文件的文件名呢?
def saveFileas():
file = filedialog.asksaveasfile(mode='w')
data = textArea.get('1.0', END+'-1c')
file.write(data)
file.close()
这里用户获得一个对话框来保存他的文件,并输入他们想要的名字。同样,我需要用户输入的名称。两者都使用默认的窗口open和save对话框。
这是我的所有代码:
from tkinter import Tk, scrolledtext, Menu, filedialog, END
main_window = Tk(className = " Text Editor")
textArea = scrolledtext.ScrolledText(main_window, width=100, height=80)
# def newFile():
def openFile():
file = filedialog.askopenfile(parent=main_window, mode='rb', title='Select a file')
contents = file.read()
textArea.delete('1.0', END)
textArea.insert('1.0', contents)
file.close()
def saveFileas():
file = filedialog.asksaveasfile(mode='w')
data = textArea.get('1.0', END+'-1c')
file.write(data)
file.close()
def saveFile():
content = textArea.get('1.0', END+'-1c')
if content:
print("There is content")
else:
print("There is no content")
#Menu options
menu = Menu(main_window)
main_window.config(menu=menu)
fileMenu = Menu(menu)
menu.add_cascade(label="File", menu=fileMenu)
fileMenu.add_command(label="New")
fileMenu.add_command(label="Open", command=openFile)
fileMenu.add_command(label="Save As", command=saveFileas)
fileMenu.add_command(label="Save", command=saveFile)
fileMenu.add_separator()
fileMenu.add_command(label="Print")
fileMenu.add_separator()
fileMenu.add_command(label="Exit")
textArea.pack()
main_window.mainloop()
答案 0 :(得分:1)
这样的东西应该用于获取文件名。
from tkinter import filedialog
root = Tk()
root.filename = filedialog.askopenfilename(initialdir = "Path Where the dialog should open first",title =
"Title of the dialog",filetypes = (("jpeg files","*.jpg"),("all files","*.*")))
print (root.filename)
root.withdraw()
答案 1 :(得分:0)
documentation似乎暗示askopenfile返回文件名(如果已选中)或空字符串(如果用户单击取消)。换句话说,它是一个字符串,而不是文件指针。您需要先打开文件。
答案 2 :(得分:-1)
askopenfile返回文件对象的句柄,就像Brian Oakley说你可以得到文件名一样:
filePath = filedialog.askopenfile(parent=main_window, mode='rb', title='Select a file')
fileName = filePath.name.split('/').pop()