📄 textwin.py
字号:
# Module 'textwin'# Text windows, a subclass of gwinimport stdwinimport gwinfrom stdwinevents import *def fixsize(w): docwidth, docheight = w.text.getrect()[1] winheight = w.getwinsize()[1] if winheight > docheight: docheight = winheight w.setdocsize(0, docheight) fixeditmenu(w)def cut(w, m, id): s = w.text.getfocustext() if s: stdwin.setcutbuffer(0, s) w.text.replace('') fixsize(w)def copy(w, m, id): s = w.text.getfocustext() if s: stdwin.setcutbuffer(0, s) fixeditmenu(w)def paste(w, m, id): w.text.replace(stdwin.getcutbuffer(0)) fixsize(w)def addeditmenu(w): m = w.editmenu = w.menucreate('Edit') m.action = [] m.additem('Cut', 'X') m.action.append(cut) m.additem('Copy', 'C') m.action.append(copy) m.additem('Paste', 'V') m.action.append(paste)def fixeditmenu(w): m = w.editmenu f = w.text.getfocus() can_copy = (f[0] < f[1]) m.enable(1, can_copy) if not w.readonly: m.enable(0, can_copy) m.enable(2, (stdwin.getcutbuffer(0) <> ''))def draw(w, area): # Draw method w.text.draw(area)def size(w, newsize): # Size method w.text.move((0, 0), newsize) fixsize(w)def close(w): # Close method del w.text # Break circular ref gwin.close(w)def char(w, c): # Char method w.text.replace(c) fixsize(w)def backspace(w): # Backspace method void = w.text.event(WE_COMMAND, w, WC_BACKSPACE) fixsize(w)def arrow(w, detail): # Arrow method w.text.arrow(detail) fixeditmenu(w)def mdown(w, detail): # Mouse down method void = w.text.event(WE_MOUSE_DOWN, w, detail) fixeditmenu(w)def mmove(w, detail): # Mouse move method void = w.text.event(WE_MOUSE_MOVE, w, detail)def mup(w, detail): # Mouse up method void = w.text.event(WE_MOUSE_UP, w, detail) fixeditmenu(w)def activate(w): # Activate method fixeditmenu(w)def open(title, str): # Display a string in a window w = gwin.open(title) w.readonly = 0 w.text = w.textcreate((0, 0), w.getwinsize()) w.text.replace(str) w.text.setfocus(0, 0) addeditmenu(w) fixsize(w) w.draw = draw w.size = size w.close = close w.mdown = mdown w.mmove = mmove w.mup = mup w.char = char w.backspace = backspace w.arrow = arrow w.activate = activate return wdef open_readonly(title, str): # Same with char input disabled w = open(title, str) w.readonly = 1 w.char = w.backspace = gwin.nop # Disable Cut and Paste menu item; leave Copy alone w.editmenu.enable(0, 0) w.editmenu.enable(2, 0) return w
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -