Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import tkinter as tk
- from tkinter import ttk
- from tkinter import Menu
- from tkinter import filedialog
- from tkinter import messagebox as mb
- class App:
- def __init__(self):
- # create window
- self.__app = tk.Tk()
- # set title
- self.__app.title = "Text Editor App"
- # create menu
- self.__menuBar = Menu(self.__app)
- # set menu
- self.__app.config(menu=self.__menuBar)
- # file menu
- self.__fileMenu = Menu(self.__menuBar, tearoff=0)
- self.__fileMenu.add_command(label="New", command=self.__newFile)
- self.__fileMenu.add_separator()
- self.__fileMenu.add_command(label="Open", command=self.__browseFile)
- self.__fileMenu.add_separator()
- self.__fileMenu.add_command(label="Save", command=self.__saveFile)
- self.__menuBar.add_cascade(label="File", menu=self.__fileMenu)
- # edit menu
- self.__editMenu = Menu(self.__menuBar, tearoff=0)
- self.__editMenu.add_command(label="Copy", command=self.__copyText)
- self.__editMenu.add_separator()
- self.__editMenu.add_command(label="Cut", command=self.__cutTest)
- self.__editMenu.add_separator()
- self.__editMenu.add_command(label="Paste", command=self.__pasteText)
- self.__menuBar.add_cascade(label="Edit", menu=self.__editMenu)
- # text viewer
- self.__textArea = tk.Text(self.__app, height=50, width=100)
- self.__textArea.pack()
- # font size
- # self.__fontSize = ttk.Combobox(self.__app,text="Change Font Size")
- # self.__menuBar.add_cascade()
- # application variables
- self.__currentFile = None
- self.__clipBoard = ""
- def __call__(self, *args, **kwargs):
- self.__app.mainloop()
- def exit(self):
- self.__app.quit()
- self.__app.destrory()
- exit()
- def __browseFile(self):
- self.__currentFile = filedialog.askopenfilename(
- initialdir="/",
- title="Select a File",
- filetypes=(("Text files", "*.txt*"),
- ("all files", "*.*")))
- # open file
- if self.__currentFile:
- with open(self.__currentFile, mode="r") as inputFile:
- data = inputFile.readlines()
- # clear text area
- self.__textArea.delete("1.0", tk.END)
- # load lines to text area
- for line in data:
- self.__textArea.insert(tk.END, line)
- def __saveFile(self):
- if not self.__currentFile:
- self.__currentFile = filedialog.asksaveasfilename(
- initialdir="/",
- title="Select a File",
- filetypes=(("Text files", "*.txt*"),
- ("all files", "*.*")))
- self.__currentFile += ".txt"
- with open(self.__currentFile, mode="w") as outputFile:
- data = self.__textArea.get("1.0", tk.END)
- outputFile.write(data)
- self.__currentFile = None
- def __newFile(self):
- if len((str.strip(self.__textArea.get("1.0", tk.END)))) > 0:
- if mb.askyesno("Data Loss Warning", "Continuing will clear the text area. "
- "Do You want to continue?"):
- self.__textArea.delete("1.0", tk.END)
- def __copyText(self):
- self.__clipBoard = self.__textArea.selection_get()
- print(self.__clipBoard)
- def __cutTest(self):
- self.__copyText()
- self.__textArea.delete(tk.SEL_FIRST, tk.SEL_LAST)
- def __pasteText(self):
- self.__textArea.insert(tk.INSERT, self.__clipBoard)
Add Comment
Please, Sign In to add comment