Ver Mensaje Individual
  #32 (permalink)  
Antiguo 03/12/2011, 13:32
Avatar de zerokilled
zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 13 años, 9 meses
Puntos: 1485
Respuesta: FAQ's de Python

Pregunta: ¿Cómo borrar el historial de comandos en Python Shell (IDLE)?

Nota: es similar a la aportación de David, solo que dicha solución no funciona en el shell IDLE de python 2.7.2 bajo Windows XP.

Fuentes:
http://bugs.python.org/issue6143
http://bugs.python.org/file14303/ClearWindow.py


Respuesta:
consiste en una extensión que se integra en IDLE. para ello, debes copiar un script y guardarlo en la ruta /lib/idlelib/ del directorio donde se instaló python. dicho script es el siguiente:
Código python:
Ver original
  1. """
  2.  
  3. Clear Window Extension
  4. Version: 0.2
  5.  
  6. Author: Roger D. Serwy
  7.        [email][email protected][/email]
  8.  
  9. Date: 2009-06-14
  10.  
  11. It provides "Clear Shell Window" under "Options"
  12. with ability to undo.
  13.  
  14. Add these lines to config-extensions.def
  15.  
  16. [ClearWindow]
  17. enable=1
  18. enable_editor=0
  19. enable_shell=1
  20. [ClearWindow_cfgBindings]
  21. clear-window=<Control-Key-l>
  22.  
  23.  
  24. """
  25.  
  26. class ClearWindow:
  27.  
  28.     menudefs = [
  29.         ('options', [None,
  30.                ('Clear Shell Window', '<<clear-window>>'),
  31.        ]),]
  32.          
  33.     def __init__(self, editwin):
  34.         self.editwin = editwin
  35.         self.text = self.editwin.text
  36.         self.text.bind("<<clear-window>>", self.clear_window2)
  37.  
  38.         self.text.bind("<<undo>>", self.undo_event)  # add="+" doesn't work
  39.  
  40.     def undo_event(self, event):
  41.         text = self.text
  42.        
  43.         text.mark_set("iomark2", "iomark")
  44.         text.mark_set("insert2", "insert")
  45.         self.editwin.undo.undo_event(event)
  46.  
  47.         # fix iomark and insert
  48.         text.mark_set("iomark", "iomark2")
  49.         text.mark_set("insert", "insert2")
  50.         text.mark_unset("iomark2")
  51.         text.mark_unset("insert2")
  52.        
  53.  
  54.     def clear_window2(self, event): # Alternative method
  55.         # work around the ModifiedUndoDelegator
  56.         text = self.text
  57.         text.undo_block_start()
  58.         text.mark_set("iomark2", "iomark")
  59.         text.mark_set("iomark", 1.0)
  60.         text.delete(1.0, "iomark2 linestart")
  61.         text.mark_set("iomark", "iomark2")
  62.         text.mark_unset("iomark2")
  63.         text.undo_block_stop()
  64.         if self.text.compare('insert', '<', 'iomark'):
  65.             self.text.mark_set('insert', 'end-1c')
  66.         self.editwin.set_line_and_column()
  67.  
  68.     def clear_window(self, event):
  69.         # remove undo delegator
  70.         undo = self.editwin.undo
  71.         self.editwin.per.removefilter(undo)
  72.  
  73.         # clear the window, but preserve current command
  74.         self.text.delete(1.0, "iomark linestart")
  75.         if self.text.compare('insert', '<', 'iomark'):
  76.             self.text.mark_set('insert', 'end-1c')
  77.         self.editwin.set_line_and_column()
  78.  
  79.         # restore undo delegator
  80.         self.editwin.per.insertfilter(undo)

tal como indica las instrucciones, debes agregar la siguiente configuración al archivo config-extension.def
Código:
[ClearWindow]
enable=1
enable_editor=0
enable_shell=1
[ClearWindow_cfgBindings]
clear-window=<Control-Key-l>
debes reiniciar python shell para que tome efecto. para utilizarlo, puedes presionar la combinación CTRL + L o en Options > Clear Shell Window.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 03/12/2011 a las 13:38