我正在尝试通过我的python项目打开文件,但是它不起作用。有什么原因吗?
import os
from tkinter import *
from tkinter import filedialog
from PIL import ImageTk,Image
def openfile():
window.filename = filedialog.askopenfilename(initialdir="Open file", filetypes=(("exe files", "*.exe"),("all files", "*.*"))
file_opener = open(window.filename)
file_opener.read()
Button = Button(window, text="Open", command=openfile)
Button.pack()
有一些错误:
filedialog
模块的名称为tkinter.filedialog
。写from tkinter.filedialog import *
允许您只写askopenfilename()
代替filedialog.askopenfilename()
。
您使用window.filename = ...
犯了意图错误。
您在同一行的末尾忘记了右括号。
未定义名称window
。
要读取文件,必须将file_opener.read()
内容放入变量中。
您必须在读取文件后将其关闭。您可以使用with。
要在标题栏中写入“打开文件”,必须将initialdir
替换为title
。
如果用户单击文件对话框中的cancel
,则会发生错误。因此,将with open...
放在try ... except
块中。
更正的脚本(我删除了PIL,因为有时无法导入它:]
import os
from tkinter import *
from tkinter.filedialog import *
window = Tk()
def openfile():
window.filename = askopenfilename(title="Open file", filetypes=(("exe files", "*.exe"),("all files", "*.*")))
data = ""
try:
with open(window.filename) as f:
data = f.read()
except:
pass
Button = Button(window, text="Open", command=openfile)
Button.pack()