尝试开发一个简单的文本编辑器如何修复 addch 错误?

问题描述

<div id="particles-js"></div>

<div class="div-header-gradient" style="z-index: 1000;">
  <p class="text-header-title-white">
    Axxon
  </p>
  <!--div-->
  <a href="#" class="href-right-header-buttons">
            Invite Bot
        </a>

  <a href="#" class="href-right-header-buttons">
            More @R_385_4045@ion
        </a>
  <!--/div-->
</div>

我正在尝试编写一个简单的终端文本编辑器。 当我运行此代码时,会出现一个新的终端窗口。 当我尝试插入一些字符时,出现此错误

import curses
import curses.ascii

class text:
     def __init__(self,win):
     ┊   self.win = win
     ┊   self.lastcmd = ''
     ┊   self.ch = self.win.getch()
     
     def cursor_curr_position(self):
     ┊   (c_line,c_row) = self.win.getyx()
     ┊   return c_line,c_row
    
     def validate(self,ch):
     ┊   if curses.ascii.isprint(ch):
     ┊   ┊   self.win.addch(ch)
 
     def editor(self):
     ┊   curses.cbreak()
     ┊   curses.raw()
     ┊   while True:
     ┊   ┊   self.win.addch(self.ch)
 
if __name__ == '__main__':
     def main(stdscr):
     ┊   win = curses.newwin(10,10,0)
     ┊   
     ┊   return text(win).editor()
curses.wrapper(main)  

有人知道如何修复吗?

解决方法

import curses
import curses.ascii

class text:
     def __init__(self,win):
     ┊   self.win = win
     ┊   self.lastcmd = ''
     
     def cursor_curr_position(self):
     ┊   (c_line,c_row) = self.win.getyx()
     ┊   return c_line,c_row
    
     def validate(self,ch):
     ┊   if curses.ascii.isprint(ch):
     ┊   ┊   self.win.addch(ch)
 
     def editor(self):
     ┊   curses.cbreak()
     ┊   curses.raw()
     ┊   while True:
             ch = self.win.getch()
             self.validate(ch)
 
if __name__ == '__main__':
     def main(stdscr):
     ┊   win = curses.newwin(10,10,0)
     ┊   
     ┊   return text(win).editor()
curses.wrapper(main)  

我在 while 循环之后放置了 getch() 变量。 一切正常!