teslariu

editor

Sep 27th, 2021
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.84 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. #
  4.  
  5. from tkinter import *
  6. from tkinter import filedialog as fd
  7.  
  8. root = Tk()
  9. root.title("Editor de Texto")
  10.  
  11.  
  12. ######### funciones del menu archivo ###########
  13. def nuevo():
  14.     global ruta
  15.     mensaje.set("Nuevo archivo")
  16.     texto.delete(1.0, END)
  17.     root.title("Nuevo archivo - Mi editor")
  18.     ruta = ""
  19.    
  20.    
  21. def abrir():
  22.     global ruta
  23.     mensaje.set("Abrir archivo")
  24.     ruta = fd.askopenfilename(
  25.                 initialdir= ".",
  26.                 filetypes = (
  27.                     ("Archivos de texto", "*.txt"),
  28.                     ("Archivos de Python", "*.py"),
  29.                     ("Todos los archivos", "*.*"),
  30.                 ),
  31.                 title = "Abrir un archivo"
  32.     )
  33.     # si la ruta es válida lo abrimos en solo lectura
  34.     if ruta != "":
  35.         f = open(ruta)
  36.         contenido = f.read()
  37.         texto.delete(1.0, END)
  38.         texto.insert('insert', contenido)
  39.         f.close()
  40.         root.title(f"{ruta} - Mi Editor")
  41.         mensaje.set("Archivo abierto")
  42.    
  43.    
  44. def guardar():
  45.     global ruta
  46.     mensaje.set("Guardar archivo")
  47.     if ruta != "":
  48.         contenido = texto.get(1.0, "end-1c")
  49.         # el modo w+ se abre para lectura y escritura. Si el archivo
  50.         # existe, lo sobreescribe. si no existe. crea uno nuevo
  51.         # para escribirlo y leerlo
  52.         f = open(ruta, "w+")
  53.         f.write(contenido)
  54.         f.close()
  55.         mensaje.set("Archivo guardado")
  56.     else:
  57.         guardar_como()
  58.  
  59.    
  60. def guardar_como():
  61.     global ruta
  62.     mensaje.set("Guardar archivo como")
  63.     f = fd.asksaveasfile(
  64.                 initialdir= ".",
  65.                 filetypes = (
  66.                     ("Archivos de texto", "*.txt"),
  67.                     ("Archivos de Python", "*.py"),
  68.                     ("Todos los archivos", "*.*"),
  69.                 ),
  70.                 title = "Guardar archivo",
  71.                 mode = "w",
  72.                 defaultextension = ".txt"
  73.         )
  74.     if f is not None:
  75.         ruta = f.name
  76.         contenido = texto.get(1.0, "end-1c")
  77.         f = open(ruta, "w+")
  78.         f.write(contenido)
  79.         f.close()
  80.         mensaje.set("Archivo guardado")
  81.     else:
  82.         mensaje.set("Se ha cancelado el guardado del archivo")
  83.         ruta = ""
  84.  
  85.  
  86.  
  87. ######## funciones del menu editar #########
  88. def undo():
  89.     texto.event_generate("<<Undo>>")
  90.  
  91. def redo():
  92.     texto.event_generate("<<Redo>>")
  93.    
  94. def cortar():
  95.     texto.event_generate("<<Cut>>")
  96.    
  97. def copiar():
  98.     texto.event_generate("<<Copy>>")
  99.    
  100. def pegar():
  101.     texto.event_generate("<<Paste>>")
  102.  
  103.  
  104.  
  105.  
  106.  
  107. #####  main ##########
  108. # creo la ruta global de los archivos
  109. ruta = ""
  110.  
  111. # creo la barra de menu
  112. menubar = Menu(root)
  113.  
  114. # creo el menu archivo
  115. archivo = Menu(menubar, tearoff=0)
  116. archivo.add_command(label="Nuevo", command=nuevo)
  117. archivo.add_command(label="Abrir", command=abrir)
  118. archivo.add_command(label="Guardar", command=guardar)
  119. archivo.add_command(label="Guardar como", command=guardar_como)
  120. archivo.add_separator()
  121. archivo.add_command(label="Salir", command=root.quit)
  122. menubar.add_cascade(label="Archivo", menu=archivo)
  123.  
  124.  
  125. # creo el menu editar
  126. undo_image = PhotoImage(file="undo.png")
  127. editar = Menu(menubar, tearoff=0)
  128. editar.add_command(label="Deshacer", accelerator="Ctrl+Z", compound='left', image=undo_image, command=undo)
  129. editar.add_command(label="Rehacer", accelerator="Shift+Ctrl+Z", command=redo)
  130. editar.add_command(label="Cortar", accelerator="Ctrl+X", command=cortar)
  131. editar.add_command(label="Copiar", accelerator="Ctrl+C", command=copiar)
  132. editar.add_command(label="Pegar", accelerator="Ctrl+V", command=pegar)
  133. menubar.add_cascade(label="Editar", menu=editar)
  134.  
  135. # añado la barra a la ventana
  136. root.config(menu=menubar)
  137.  
  138. # creo el scrollbar
  139. scroll = Scrollbar(root)
  140. scroll.pack(side=RIGHT, fill=Y)
  141.  
  142. # creo la zona de trabajo del editor
  143. texto = Text(root)
  144. texto.pack(fill='both', expand=1)
  145. texto.config(
  146.     padx=6, pady=6, bd=0,
  147.     font = ("arial",12),
  148.     bg = "beige",
  149.     undo = True, maxundo=20,
  150.     yscrollcommand = scroll.set
  151.     )
  152. scroll.config(command= texto.yview)
  153.  
  154. # barra de estado
  155. mensaje = StringVar()
  156. mensaje.set("Bienvenido a Mi Editor")
  157. barra_inferior = Label(root, textvar=mensaje, justify="right")
  158. barra_inferior.pack(side="left")
  159.  
  160. root.mainloop()
  161.  
Advertisement
Add Comment
Please, Sign In to add comment