Advertisement
Guest User

Python Text editor

a guest
Jun 17th, 2017
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.82 KB | None | 0 0
  1. from tkinter import Tk, scrolledtext, Menu, filedialog, END, messagebox, simpledialog
  2. from tkinter import *
  3. import os
  4. import sys
  5. import fileinput
  6.  
  7. def newFile():
  8.     global is_saved
  9.     if is_saved == len(textArea.get('1.0', END+'-1c')):
  10.         textArea.delete('1.0', END)
  11.         main_window.title("New File")
  12.         is_saved = 0
  13.     else:
  14.         FileNotSaved()
  15.         textArea.delete('1.0', END)
  16.         main_window.title("New File")
  17.         is_saved = 0
  18.  
  19.  
  20. def openFile():
  21.     global is_saved
  22.     global file
  23.     if is_saved == len(textArea.get('1.0', END+'-1c')):
  24.         file = filedialog.askopenfile(parent=main_window, mode='rb', title="Please select a file:")
  25.         data = file.read()
  26.         textArea.delete('1.0', END)
  27.         textArea.insert('1.0', data)
  28.         file.close()
  29.         main_window.title(file.name)
  30.         is_saved = len(textArea.get('1.0', END+'-1c'))
  31.     else:
  32.         FileNotSaved()
  33.         file = filedialog.askopenfile(parent=main_window, mode='rb', title="Please select a file:")
  34.         data = file.read()
  35.         textArea.delete('1.0', END)
  36.         textArea.insert('1.0', data)
  37.         file.close()
  38.         main_window.title(file.name)
  39.         is_saved = len(textArea.get('1.0', END+'-1c'))
  40.  
  41. def saveFileAs():
  42.     global file
  43.     file = filedialog.asksaveasfile(mode='w')
  44.     data = textArea.get('1.0', END+'-1c')
  45.     file.write(data)
  46.     file.close()
  47.     main_window.title(file.name)
  48.     global is_saved
  49.     is_saved = len(textArea.get('1.0', END+'-1c'))
  50.  
  51.  
  52. def saveFile():
  53.     global is_saved
  54.     if file:
  55.         fileToOpen = open(file.name, 'w')
  56.         data = textArea.get('1.0', END+'-1c')
  57.         fileToOpen.write(data)
  58.         fileToOpen.close()
  59.         is_saved = len(textArea.get('1.0', END+'-1c'))
  60.     else:
  61.         saveFileAs()
  62.  
  63. def FileNotSaved():
  64.     if messagebox.askyesno("Save?", "Do you want to save first?"):
  65.         saveFile()
  66.  
  67. def Exit():
  68.     if is_saved == len(textArea.get('1.0', END+'-1c')):
  69.         main_window.destroy()
  70.     else:
  71.         FileNotSaved()
  72.         main_window.destroy()
  73.  
  74. def Undo():
  75.     textArea.edit_undo()
  76.  
  77. def Redo():
  78.     textArea.edit_redo()
  79.  
  80. def Replace():
  81.     input = simpledialog.askstring("Find and Replace", "Enter text to find...")
  82.     replace = simpledialog.askstring("Find and Replace", "Enter text to replace with...")
  83.     text = textArea.get('1.0', END+'-1c')
  84.     if input in text:
  85.         text = text.replace(input, replace)
  86.         textArea.delete('1.0', END)
  87.         textArea.insert('1.0', text)
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95. def Find():
  96.     text = textArea.get('1.0', END+'-1c').lower()
  97.     input = simpledialog.askstring("Find", "Enter text to find...").lower()
  98.     startindex = []
  99.     endindex = []
  100.     lines = 0
  101.     if input in text:
  102.         text = textArea.get('1.0', END+'-1c').lower().splitlines()
  103.         for var in text:
  104.             character = text[lines].index(input)
  105.             start = str(lines + 1) + '.' + str(character)
  106.             startindex.append(start)
  107.             end = str(lines + 1) + '.' + str(character + int(len(input)))
  108.             endindex.append(end)
  109.             textArea.tag_add('select', startindex[lines], endindex[lines])
  110.             lines += 1
  111.  
  112.     textArea.tag_config('select', background = 'green')
  113.  
  114.  
  115. def Finds():
  116.     textArea.tag_add('select', '1.0', '2.0')
  117.     textArea.tag_config('select', foreground='green')
  118.  
  119.  
  120. def Findt():
  121.     lines = 0
  122.     list = []
  123.     list2 = ['first line', 'why', 'third line']
  124.     for item in list2:
  125.         list.append(list2[lines])
  126.         lines += 1
  127.     print(list)
  128.  
  129.  
  130.  
  131.  
  132.  
  133. is_saved = 0
  134. file = ""
  135.  
  136. main_window = Tk()
  137. main_window.title("New File")
  138. textArea = scrolledtext.ScrolledText(main_window, width=100, height=30)
  139. menu = Menu(main_window)
  140. main_window.config(menu=menu)
  141. fileMenu = Menu(menu, tearoff=False)
  142. menu.add_cascade(label='File', menu=fileMenu)
  143. fileMenu.add_command(label='New', command=newFile)
  144. fileMenu.add_separator()
  145. fileMenu.add_command(label='Open', command=openFile)
  146. fileMenu.add_command(label='Save As', command=saveFileAs)
  147. fileMenu.add_command(label='Save', command=saveFile)
  148. fileMenu.add_separator()
  149. fileMenu.add_command(label='Exit', command=Exit)
  150.  
  151.  
  152.  
  153. editMenu = Menu(menu, tearoff=False)
  154. menu.add_cascade(label='Edit', menu=editMenu)
  155. editMenu.add_command(label='Undo', command=Undo)
  156. editMenu.add_command(label='Redo', command=Redo)
  157. editMenu.add_separator()
  158. editMenu.add_command(label='Cut', command=lambda: textArea.event_generate('<Control-x>'))
  159. editMenu.add_command(label='Copy', command=lambda: textArea.event_generate('<Control-c>'))
  160. editMenu.add_command(label='Paste', command=lambda: textArea.event_generate('<Control-v>'))
  161. editMenu.add_separator()
  162. editMenu.add_command(label='Find', command =Find)
  163. editMenu.add_command(label='Replace', command=Replace)
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170. textArea.pack()
  171. main_window.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement