Tkinter 打开文档
在tkinter.filedialog模块中有askopenfilename( )方法,可以使用此方法,让窗口出现对话框,再执行选择所要打开的文档。
filename = askopenfilename()
上述程序可以传回所存盘文档的路径(含文件夹),然后可以使用open( )方法打开文档,最后将所打开的文档插入Text控件。步骤如下。
(1)在打开对话框中选择欲打开的文档,可参考下列程序第12行。
(2)使用open File( )方法打开文档,可参考下列程序第15行。
(3)使用read( )方法读取文档内容,可参考下列程序第16行。
(4)删除Text控件内容,可参考下列程序第17行。
(5)将所读取的文档内容插入Text控件,可参考下列程序第18行。
(6)更改窗口标题名称,可参考下列程序第19行。
示例1
增加打开文档Open的应用,这个程序在执行时,可以使用File→Open命令打开文档,然后将所打开的文档存储在Text控件,同时将窗口标题改为所开启的文档路径。
from tkinter import *
from tkinter.filedialog import asksaveasfilename
from tkinter.filedialog import askopenfilename
def newFile():
text.delete("1.0",END)
root.title("Untitled")
def openFile():
global filename
filename = askopenfilename()
if filename == "":
return
with open(filename,"r") as fileObj:
content = fileObj.read()
text.delete("1.0",END)
text.insert(END,content)
root.title(filename)
def saveAsFile():
global filename
textContent = text.get("1.0",END)
filename = asksaveasfilename(defaultextension=".txt")
print("The file path passed back is : ",filename)
if filename == "":
return
with open(filename,"w") as output:
output.write(textContent)
root.title(filename)
filename = "apidemos"
root = Tk()
root.title(filename)
root.geometry("300x180")
menubar = Menu(root) # 建立最上层菜单
# 建立菜单类别对象,并将此菜单命名为File
filemenu = Menu(menubar,tearoff=False)
menubar.add_cascade(label="File",menu=filemenu)
# 在File菜单内建立菜单列表
filemenu.add_command(label="New File",command=newFile)
filemenu.add_command(label="Open File ...",command=openFile)
filemenu.add_command(label="Save As ...",command=saveAsFile)
filemenu.add_separator()
filemenu.add_command(label="Exit",command=root.destroy)
root.config(menu=menubar)
# 建立Text
text = Text(root,undo=True)
text.pack(fill=BOTH,expand=True)
root.mainloop()
输出:
当单击Open
按钮后,适度放大窗口可以得到下列结果。