問題描述
我想使用 asksaveasfilename 對話框將我在 Text 小部件中輸入的一些內容保存為 .txt
或 .doc
格式.在此之后,我希望它分別打開.記事本或 MS Word.
I want to save some stuff I entered in a Text widget to a .txt
or .doc
format, using an asksaveasfilename dialog box. After this I want it to open in resp. Notepad or MS Word.
from tkFileDialog import asksaveasfilename
import os.path
name = asksaveasfilename(
initialdir="dir",
title="Save as",
filetypes=[("Text files",".txt"),("Word files",".doc")])
data = open(name,"w")
data.write("text from text widget")
os.startfile(name)
它會創建文件,但不會在 MS Word 或記事本中打開它.相反,它詢問我想如何打開這個文件.如果我選擇程序,它將正確打開,但我希望它直接打開.(不選擇打開文件的程序).當我直接在文件名:"框中提供擴展名時,它會按照我想要的方式工作.
It creates the file but it won't open it in MS Word or Notepad. Instead it asks how I want to open this file. If I choose the programm it will open correctly, but I want it to open directly. (without choosing a program to open the file with). When I give the extension directly in the "File name:" box it works the way I want though.
這有效:文件名:something.doc保存類型:Word 文件 (*.doc)---> 創建 something.doc 并在 MS Word 中打開它.
This works: File name: something.doc Save as type: Word file (*.doc) ---> creates something.doc and opens it in MS Word.
但這并不文件名稱:某事保存類型:Word 文件 (*.doc)---> 創建一些東西(沒有擴展名)并詢問我希望它在什么程序中打開.
But this doesn't File name: something Save as type: Word file (*.doc) ---> creates something (no extension) and ask in what program I want it to open.
我使用 Python 2.7.8、Windows 8、Office 2010.
I use Python 2.7.8, Windows 8, Office 2010.
推薦答案
加上print name
就可以看到問題,例如
You can see the problem if you add print name
, e.g.
C:/Users/jsharpe/Downloads/testing
請注意,沒有添加任何擴展 - 我只輸入了 "testing"
.filetypes
參數對于限制用戶選擇現有文件更有用,如果用戶不提供擴展名,它將不會添加適當的擴展名.
note that no extension has been added - I only entered "testing"
. The filetypes
argument is more useful for limiting the user's selection of existing files, it won't add the appropriate extension if the user doesn't supply one.
您可以為用戶不輸入擴展名的情況設置 defaultextension
,但這不會反映在下拉列表中選擇的類型(例如,如果您設置了 defaultextension=".txt"
即使用戶從 filetypes
中選擇該選項,它也不會是 .doc
).
You can set a defaultextension
for the cases where the user doesn't enter an extension, but this won't reflect the type selected in the drop-down (e.g. if you set defaultextension=".txt"
it won't be .doc
even if the user chooses that option from filetypes
).
name = asksaveasfilename(defaultextension=".txt",
filetypes=[("Text files",".txt"),
("Word files",".doc")],
initialdir="dir",
title="Save as")
(請注意,隨著您添加越來越多的選項,按字母順序排列的參數順序會讓生活變得更輕松)
附帶說明,您(仍然!)不要 close
文件,這可能會導致問題 - 我建議對文件使用 with
上下文管理器處理:
On a side note, you (still!) don't close
the file, which could cause issues - I'd suggest using the with
context manager for file handling:
with open(name, "w") as data:
data.write("text from text widget")
這篇關于如何使用 asksaveasfile 將文本從 Text-widget Tkinter 保存到 .doc?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!