为 savecommand 添加 .txt、.png 和其他选项
Posted
技术标签:
【中文标题】为 savecommand 添加 .txt、.png 和其他选项【英文标题】:Adding .txt, .png and other options for savecommand 【发布时间】:2017-08-11 15:19:00 【问题描述】:所以我在 python 3 中启动了一个小型文本编辑器项目,并且我设法添加了一个带有保存文档功能的保存按钮,但我想添加在 .txt、.png 和其他文件之间进行选择的选项保存命令。我怎么能这样做?
from tkinter import * # Imports everything from tkinter
import tkinter
from tkinter import filedialog
class Window(Frame): # Frame is a class in tkineter and we are creating a
frame or a window
def __init__(self, master=None):
Frame.__init__(self, master)
self.master = master #Mainframe or main window
self.init_window()
def init_window(self): #
self.master.title("GUI") #windows title is GUI
self.pack(fill=BOTH, expand=1) # Adjust window as we want, but also
fill up the window as a defult
menu =Menu(self.master)
self.master.config(menu=menu)
file = Menu(menu)
file.add_command(label='Open File')
file.add_command(label='New File')
file.add_command(label='Save as')
file.add_command(label='Save', command=self.file_save)
file.add_command(label='Exit', command=self.client_exit)
menu.add_cascade(label='File', menu=file)
edit = Menu(menu)
edit.add_command(label='Undo')
edit.add_command(label='Redo')
menu.add_cascade(label='Edit', menu=edit)
def file_save(self):
f = filedialog.asksaveasfile(mode='w', defaultextension=".txt")
if f is None:
return
text2save = str(text.get(1.0, END))
f.write(text2save)
f.close()
def client_exit(self):
exit()
root = Tk() #
root.geometry("400x300") #Specify the dimention of the window as 400 by
300
app = Window(root)
root.mainloop() # Generates our window for us
【问题讨论】:
【参考方案1】:如果您查看the documentation for asksaveasfile
,您会看到有一个filetypes
参数。只需填写您想要的文件类型列表即可。
filetypes_choices = [('Text file', '*.txt'), ('PNG Image File', '*.png')]
f = filedialog.asksaveasfile(mode='w', defaultextension=".txt", filetypes=filetypes_choices)
【讨论】:
这就是我想要的!谢谢!但我也想知道,当我点击保存时,命令提示符在text2save = str(text.get(1.0, END))
中返回“名称'文本'未定义”,但文件仍保存为文本文档!
@Hernes97 恐怕我无法帮你解决这个问题。您收到错误似乎很奇怪,但代码似乎会产生结果。您确定该文件不存在吗?
文件不存在,除非我保存文件以上是关于为 savecommand 添加 .txt、.png 和其他选项的主要内容,如果未能解决你的问题,请参考以下文章