为 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 和其他选项的主要内容,如果未能解决你的问题,请参考以下文章

Python-给图像添加椒盐噪声和高斯噪声

批量把域用户加入到用户组

利用sqlmap进行POST注入

PN532 卡模拟模式

python 写数据到txt 文件

华硕PN64 PN52 评测