python编辑器和终端_从python curses程序运行终端文本编辑器
我想在python curses程序中使用外部終端文本編輯器和尋呼機。我使用子進程庫。在大多數情況下,它工作得很好,除了當我退出文本編輯器時(與nemo和vi相同),我不能再次使光標不可見。另外,在調用子進程之后,library不會在退出時清理屏幕。我錯過了什么?在
另外,我知道curses.textpad,但我更喜歡使用外部編輯器和尋呼機。在
下面是一個程序:import curses
import subprocess
class tui(object):
def __init__(self):
pass
def setup(self, stdscr):
self.stdscr = stdscr
curses.use_default_colors()
curses.init_pair(1, curses.COLOR_WHITE, -1)
self.maxY, self.maxX = self.stdscr.getmaxyx()
try:
curses.curs_set(0)
except:
pass
self.win = curses.newwin(self.maxY, self.maxX, 0, 0)
self.stdscr.nodelay(0)
self.draw()
while True:
try:
c = self.win.getch()
ret = self.keypress(c)
if (ret == -1):
return
except keyboardInterrupt:
break
def draw(self):
self.win.erase()
self.win = curses.newwin(self.maxY, self.maxX, 0, 0)
self.win.box()
self.win.refresh()
def nano(self):
curses.savetty()
subprocess.run("nano")
curses.resetty()
curses.curs_set(0)
def less(self):
curses.savetty()
subprocess.run(["less", "/etc/fstab"])
curses.resetty()
curses.curs_set(0)
def keypress(self, char):
if char == curses.KEY_EXIT or char == ord('q'):
return -1
if char == ord('e'):
self.nano()
self.draw()
return
if char == ord('l'):
self.less()
self.draw()
return
if __name__ == '__main__':
mytui = tui()
curses.wrapper(mytui.setup)
總結
以上是生活随笔為你收集整理的python编辑器和终端_从python curses程序运行终端文本编辑器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 两个vlan之间如何通信_如何桥接两个不
- 下一篇: python什么时候用框架_python