1. 程式人生 > >python自帶的IDLE如何清屏

python自帶的IDLE如何清屏

鏈接 過程 tex alter current tor efi mar and

作者:知乎用戶 鏈接:https://www.zhihu.com/question/20917976/answer/32876441 來源:知乎 著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。 在學習和使用python的過程中,少不了要與Python IDLE打交道。但使用 Python IDLE 都會遇到一個常見而又懊惱的問題——要怎麽清屏? 答案是為IDLE增加一個清屏的擴展ClearWindow就可以了(在Issue 6143: IDLE中可以看到這個擴展的說明)。 下面我說說安裝使用的方法。 1、下載ClearWindow.py(最下面有代碼,保存為ClearWindow.py)。 2、拷貝ClearWindow.py文件,放在Python安裝目錄Python XXX\Lib\idlelib下面(XXX為你的python版本)。 3、記事本打開Python XXX\Lib\idlelib目錄下的config-extensions.def(IDLE擴展的配置文件), 為防止出錯,你可以在打開它之前先copy一個備份 。 4、修改config-extensions.def ,在末尾添加如下內容,然後保存退出: [ClearWindow] enable=1 enable_editor=0 enable_shell=1 [ClearWindow_cfgBindings] clear-window=<Control-Key-;> 5、打開Python的IDLE,options選項中就可以看到增加了Clear shell window ctrl+;。 6、在IDLE輸入代碼,然後按Ctrl+;(是指Ctrl和;),發現剛輸入代碼可以被清除了。 ClearWindow.py
 
""" Clear Window Extension Version: 0.2 Author: Roger D. Serwy [email protected] 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)

python自帶的IDLE如何清屏