利用Python和Tkinter构建简朴的Markdown编辑器(3)

然后利用add_command()和add_separator()函数添加3个子菜单(打开、另存为和退出)和脱离符。打开子菜单将执行openfile函数,另存为子菜单将执行savefile函数。最后,Exit将执行一个内建函数quit,该函数将封锁措施。

然后利用add_cascade()函数汇报第一个菜单工具包括filemenu变量。这包罗标签文件中的所有子菜单。

最后,我们利用self.master.config()来汇报窗口利用主菜单作为窗口的菜单栏。

利用Python和Tkinter构建简朴的Markdown编辑器

它看起来是这样的,可是此刻还不要运行它。你会提示错误,openfile和savefile函数没有界说。

正如您此刻看到的,我们必需在Window类中界说两个函数,我们将在个中利用tkinter的filedialog。

首先让我们界说打开文件的函数:

def openfile(self):
    openfilename = filedialog.askopenfilename(filetypes=(("Markdown File", "*.md , *.mdown , *.markdown"),
                                                                  ("Text File", "*.txt"),
                                                                  ("All Files", "*.*")))
    if openfilename:
        try:
            self.inputeditor.delete(1.0, END)
            self.inputeditor.insert(END , open(openfilename).read())
        except:
            print("无法打开文件!") 

在这里,首先我们向用户显示一个文件欣赏器对话框,答允他们利用filedialog.askopenfilename()选择要打开的文件。与filetypes要害字参数,我们汇报对话框只打开这些范例的文件通过通报一个元组与支持的文件(根基上所有范例的文件):

带 .md , .mdown , .markdown扩展名的文件,

扩展名为.txt的文本文件

在利用通配符扩展的下一行中,我们汇报对话框打开任何扩展名的文件。

然后我们查抄用户是否选择了一个文件。假如是,我们实验打开文件。然后删除输入字段中从第一行的第0个字符到字段末端的所有文本。

接下来,我们打开并读取所选文件的内容,并在输入字段中插入内容。

假如我们的措施不能打开一个文件,它将打印堕落误。可是等等,这不是处理惩罚错误的好要领。我们在这里可以做的是向用户显示一个雷同这样的错误动静:

利用Python和Tkinter构建简朴的Markdown编辑器

为此,我们首先要从tkinter包中导入动静框messagebox。

from tkinter import messagebox as mbox

然后,不像上面那样只是打印一个错误动静,我们将用下面的行替换那一行,以便向用户显示正确的错误动静。

mbox.showerror(“打开选定文件时堕落 " , "哎呀!,您选择的文件:{}无法打开!".format(openfilename))

这将建设一个错误动静,就像我上面显示的文件无法打开时的屏幕截图一样。

mbox.showerror函数,第一个参数是动静框的标题。第二个是要显示的动静。

此刻,我们需要编写一个savefile函数来生存markdown输入。

def savefile(self):
        filedata = self.inputeditor.get("1.0" , END)
        savefilename = filedialog.asksaveasfilename(filetypes = (("Markdown File", "*.md"),
                                                                  ("Text File", "*.txt")) , title="生存 Markdown 文件")
        if savefilename:
            try:
                f = open(savefilename , "w")
                f.write(filedata)
            except:
                mbox.showerror("生存文件错误" , "哎呀!, 文件: {} 生存错误!".format(savefilename))

在这里,首先我们扫描输入字段的所有内容并将其存储在一个变量中。然后,我们通过为两种范例的文件范例(.md和.txt)。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsdjxz.html