Casper656

Gui.py

Jun 7th, 2020
624
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.64 KB | None | 0 0
  1. import tkinter as tk
  2. from tkinter import ttk
  3. from tkinter import Menu
  4. from tkinter import filedialog
  5. from tkinter import messagebox as mb
  6.  
  7.  
  8. class App:
  9.  
  10.     def __init__(self):
  11.         # create window
  12.         self.__app = tk.Tk()
  13.         # set title
  14.         self.__app.title = "Text Editor App"
  15.         # create menu
  16.         self.__menuBar = Menu(self.__app)
  17.         # set menu
  18.         self.__app.config(menu=self.__menuBar)
  19.         # file menu
  20.         self.__fileMenu = Menu(self.__menuBar, tearoff=0)
  21.         self.__fileMenu.add_command(label="New", command=self.__newFile)
  22.         self.__fileMenu.add_separator()
  23.         self.__fileMenu.add_command(label="Open", command=self.__browseFile)
  24.         self.__fileMenu.add_separator()
  25.         self.__fileMenu.add_command(label="Save", command=self.__saveFile)
  26.         self.__menuBar.add_cascade(label="File", menu=self.__fileMenu)
  27.         # edit menu
  28.         self.__editMenu = Menu(self.__menuBar, tearoff=0)
  29.         self.__editMenu.add_command(label="Copy", command=self.__copyText)
  30.         self.__editMenu.add_separator()
  31.         self.__editMenu.add_command(label="Cut", command=self.__cutTest)
  32.         self.__editMenu.add_separator()
  33.         self.__editMenu.add_command(label="Paste", command=self.__pasteText)
  34.         self.__menuBar.add_cascade(label="Edit", menu=self.__editMenu)
  35.         # text viewer
  36.         self.__textArea = tk.Text(self.__app, height=50, width=100)
  37.         self.__textArea.pack()
  38.  
  39.         # font size
  40.         # self.__fontSize = ttk.Combobox(self.__app,text="Change Font Size")
  41.         # self.__menuBar.add_cascade()
  42.         # application variables
  43.         self.__currentFile = None
  44.         self.__clipBoard = ""
  45.  
  46.     def __call__(self, *args, **kwargs):
  47.         self.__app.mainloop()
  48.  
  49.     def exit(self):
  50.         self.__app.quit()
  51.         self.__app.destrory()
  52.         exit()
  53.  
  54.     def __browseFile(self):
  55.         self.__currentFile = filedialog.askopenfilename(
  56.             initialdir="/",
  57.             title="Select a File",
  58.             filetypes=(("Text files", "*.txt*"),
  59.                        ("all files", "*.*")))
  60.         # open file
  61.         if self.__currentFile:
  62.             with open(self.__currentFile, mode="r") as inputFile:
  63.                 data = inputFile.readlines()
  64.                 # clear text area
  65.                 self.__textArea.delete("1.0", tk.END)
  66.                 # load lines to text area
  67.                 for line in data:
  68.                     self.__textArea.insert(tk.END, line)
  69.  
  70.     def __saveFile(self):
  71.         if not self.__currentFile:
  72.             self.__currentFile = filedialog.asksaveasfilename(
  73.                 initialdir="/",
  74.                 title="Select a File",
  75.                 filetypes=(("Text files", "*.txt*"),
  76.                            ("all files", "*.*")))
  77.         self.__currentFile += ".txt"
  78.         with open(self.__currentFile, mode="w") as outputFile:
  79.             data = self.__textArea.get("1.0", tk.END)
  80.             outputFile.write(data)
  81.  
  82.         self.__currentFile = None
  83.  
  84.     def __newFile(self):
  85.         if len((str.strip(self.__textArea.get("1.0", tk.END)))) > 0:
  86.             if mb.askyesno("Data Loss Warning", "Continuing will clear the text area. "
  87.                                                 "Do You want to continue?"):
  88.                 self.__textArea.delete("1.0", tk.END)
  89.  
  90.     def __copyText(self):
  91.         self.__clipBoard = self.__textArea.selection_get()
  92.         print(self.__clipBoard)
  93.  
  94.     def __cutTest(self):
  95.         self.__copyText()
  96.         self.__textArea.delete(tk.SEL_FIRST, tk.SEL_LAST)
  97.  
  98.     def __pasteText(self):
  99.         self.__textArea.insert(tk.INSERT, self.__clipBoard)
Add Comment
Please, Sign In to add comment