1
我正在創建一個使用curses
構建簡單用戶界面的應用程序。它還使用subprocess
模塊來運行外部文本編輯器,以便用戶可以鍵入一些文本,然後關閉編輯器並返回主程序。在curses應用程序中使用子進程
問題是,當編輯器是基於控制檯的,例如Vim或Nano時,curses不會正確地初始化。這意味着如果使用色彩模式(curses.start_color()
),終端在程序結束後保持着色。
這是一個測試腳本有這個問題(至少對我來說,我使用Ubuntu和GNOME終端):
import curses
import subprocess
screen = curses.initscr()
curses.noecho()
curses.cbreak()
screen.keypad(1)
try:
curses.curs_set(0)
except curses.error:
pass
curses.start_color()
screen.addstr(0, 0, 'hello, world!')
screen.refresh()
while 1:
c = screen.getch()
if c == ord('q'):
break
if c == ord('r'):
subprocess.call('vim', shell=False)
screen.clear()
screen.addstr(0, 0, 'hello, world!')
screen.refresh()
curses.nocbreak()
screen.keypad(0)
curses.echo()
curses.curs_set(1)
curses.endwin()
(按r
進入Vim的,然後q
退出)
有沒有辦法解決這個問題?
它的工作原理,但我認爲重置用戶的終端並不是那麼好,丟失了所有的回滾等。但如果我找不到更好的解決方案,我會使用它,謝謝。 – sealion