• Python IDLE 增加清屏功能


    (Python2,Python3 通用)

    保存如下代码到 ClearWindow.py

    """
    
    Clear Window Extension
    Version: 0.2
    
    Author: Roger D. Serwy
            roger.serwy@gmail.com
    
    Date: 2009-06-14
    
    It provides "Clear Shell Window" under "Options"
    with ability to undo.
    
    Add these lines to config-extensions.def
    
    [ClearWindow]
    enable=1
    enable_editor=0
    enable_shell=1
    [ClearWindow_cfgBindings]
    clear-window=<Control-Key-l>
    
    
    """
    
    class ClearWindow:
    
        menudefs = [
            ('options', [None,
                   ('Clear Shell Window', '<<clear-window>>'),
           ]),]
    		 
        def __init__(self, editwin):
            self.editwin = editwin
            self.text = self.editwin.text
            self.text.bind("<<clear-window>>", self.clear_window2)
    
            self.text.bind("<<undo>>", self.undo_event)  # add="+" doesn't work
    
        def undo_event(self, event):
            text = self.text
            
            text.mark_set("iomark2", "iomark")
            text.mark_set("insert2", "insert")
            self.editwin.undo.undo_event(event)
    
            # fix iomark and insert
            text.mark_set("iomark", "iomark2")
            text.mark_set("insert", "insert2")
            text.mark_unset("iomark2")
            text.mark_unset("insert2")
            
    
        def clear_window2(self, event): # Alternative method
            # work around the ModifiedUndoDelegator
            text = self.text
            text.undo_block_start()
            text.mark_set("iomark2", "iomark")
            text.mark_set("iomark", 1.0)
            text.delete(1.0, "iomark2 linestart")
            text.mark_set("iomark", "iomark2")
            text.mark_unset("iomark2")
            text.undo_block_stop()
            if self.text.compare('insert', '<', 'iomark'):
                self.text.mark_set('insert', 'end-1c')
            self.editwin.set_line_and_column()
    
        def clear_window(self, event):
            # remove undo delegator
            undo = self.editwin.undo
            self.editwin.per.removefilter(undo)
    
            # clear the window, but preserve current command
            self.text.delete(1.0, "iomark linestart")
            if self.text.compare('insert', '<', 'iomark'):
                self.text.mark_set('insert', 'end-1c')
            self.editwin.set_line_and_column()
     
            # restore undo delegator
            self.editwin.per.insertfilter(undo)
     
    

    将上述文件保存到 C:Python27Libidlelib 下。再打开此目录下的 config-extensions.def 文件,在其尾部添加如下代码

    ################################# >>> Added for clear Window
    [ClearWindow]
    enable=1
    enable_editor=0
    enable_shell=1
    [ClearWindow_cfgBindings]
    clear-window=<Control-Key-l>
    

    好了,现在 IDLE 已经可以支持 Ctrl + l 清屏了。

    注意:如果遇到 IDLE 快捷键冲突 (我在 Ubuntu 18.04 的 Python3.6.8 IDLE 中遇到过),例如 IDLE 默认已经定义了 Ctrl + l 为其它用途快捷键,则可以在 IDLE 菜单 Options -> Configure IDLE -> Keys 重新设定快捷键,如下图:

     

    以上方法同样适用于 Linux。在 Linux 下,上述两个文件应该位于: /usr/lib/python2.7/idlelib  或  /usr/lib/python3.4/idlelib    /usr/lib64/python2.7/idlelib

     完。

  • 相关阅读:
    两层和三层的讨论(C/S)
    FF IE 编码 转换
    MySql数据库 字符编码问题解决办法
    JDO的persistence by reachability
    技术贴
    Eclipse 快捷键总结
    记录一下: 火狐 IE 实现图片本地预览 demo
    一般jsp 翻页 选择 保留 代码
    复习下几个排序
    Eclipse 插件开发 资料贡献
  • 原文地址:https://www.cnblogs.com/gaowengang/p/6820144.html
Copyright © 2020-2023  润新知