great ! maybe the next step is a syntax coloriser ^^_ Abdur-Rahmaan Janhangeer, Mauritius abdurrahmaanjanhangeer.wordpress.com
On 31 Dec 2017 02:05, "Wu Xi" <n...@luegenpresse.edu> wrote: > class writerKl(object): > def __init__(self): > import tkinter > from tkinter import messagebox > from tkinter import filedialog > from tkinter import Tk > from tkinter import Menu > from tkinter import END > > self.fileName = None > self.saved = True > self.app = tkinter.Tk() > self.app.title("FenInst is another instance of the writerKl > class") > > self.menuBar = tkinter.Menu(self.app) > self.fileMenu = tkinter.Menu(self.menuBar, tearoff=0) > self.fileMenu.add_command(label="New", > command=self.newFile) > self.fileMenu.add_command(label="Open", > command=self.openFile) > self.fileMenu.add_command(label="Save", > command=self.saveFile) > self.fileMenu.add_command(label="Save As", > command=self.saveFileAs) > self.fileMenu.add_separator() ; self.About = "A selfish > tkinter text editor in 100 lines of python3 code.\n\n In fact this very > ''About window'' also was modded using the selfish editor himself.\n\n Open > the source ''writer.py'' to find out why this editor is seen as so 105x > self-obsessed." > self.fileMenu.add_command(label= "About", command=lambda: > tkinter.messagebox.showinfo("About", self.About)) > self.fileMenu.add_separator() > self.fileMenu.add_command(label="Exit", command=self.onExit) > self.menuBar.add_cascade( label="File", menu =self.fileMenu) > self.app.config(menu=self.menuBar) > > self.app.bind('<Control-n>', self.newFile ) # key > Bindings > self.app.bind('<Control-o>', self.openFile) > self.app.bind('<Control-s>', self.saveFile) > self.app.bind('<Key>', self.setsavedFalse ) > self.app.protocol("WM_DELETE_WINDOW", self.onExit) # save > before exit? > > self.textf = tkinter.Text(self.app) # > initializing text container > self.textf.pack(expand=True, fill='both') # > deploying text container > self.textf.focus() > self.app.mainloop() > > def newFile(self): > import tkinter > if not self.saved: > save = self.promptToSave() > if save: self.saveFile() > elif self.save is None: return > self.fileName = None > self.textf.delete(0.0, tkinter.END) > self.saved = True > > def openFile(self): > import tkinter > if not self.saved: > self.save = self.promptToSave() > if self.save: > self.saveFile() > elif self.save is None: > return > try: > self.f = tkinter.filedialog.askopenfile( filetypes=[ ('all > files', '*') , ('py files', '.py') ] ) > if self.f: > self.fileName = self.f.name > self.t = self.f.read() > self.textf.delete(0.0, tkinter.END) > self.textf.insert(tkinter.END, self.t) > self.saved = True > except: tkinter.messagebox.showerror("Error", "Unable to > open file.") > > def saveFile(self): > import tkinter > self.t = self.textf.get(0.0, tkinter.END) > if self.fileName: > self.f = open(self.fileName, "w") > self.f.write(self.t) > self.f.close() > self.saved = True > else: self.saveFileAs() > > def saveFileAs(self): > import tkinter > self.f = tkinter.filedialog.asksaveasfile(defaultextension=".txt", > filetypes=[ ('all files', '*'),('py files', '.py') ]) > self.t = self.textf.get(0.0, tkinter.END) > if self.f: > try: > self.f.write(self.t) > self.f.close( ) > self.saved = True > self.fileName=self.f.name > except: tkinter.messagebox.showwarning("Error", "Unable to > save file.") > > def onExit(self): > import tkinter > if not self.saved: > self.save = self.promptToSave() > if self.save: self.saveFile() > elif self.save is None: return > self.app.destroy() > > def setsavedFalse(self, key): > import tkinter > if (key.keysym.isalpha() or key.keysym.isdigit() or key.keysym in > ["Return", "Tab", "Backspace", "Delete"]): self.saved = False # any key > that changes text > > def promptToSave(self): > import tkinter > return tkinter.messagebox.askyesnocancel( "Save file?", "Do > you want to save the current file?") > > > if __name__ == '__main__' : > import tkinter > FenInst =writerKl() > -- > https://mail.python.org/mailman/listinfo/python-list > -- https://mail.python.org/mailman/listinfo/python-list