Python を使用して、スペースバーを押すたびに入力されたすべての文字を「a」に変換するスクリプトを作成しようとしています。たとえば、「python」と入力してからスペースを入力すると、「python」は「aaaaaa」に変換されます。
import argparse
import curses
import time
# Main Function
def main():
screen=curses.initscr()
curses.cbreak()
screen.keypad(1)
curses.echo()
str_txt=''
count = 0
while True:
s=screen.getch()
if s != ord(' ') and s != ord('\x1b') and s != curses.KEY_BACKSPACE and s != curses.KEY_ENTER:
str_txt += chr(int(s))
count+=1
if s == ord(' '):
dim = screen.getyx()
h = 'a'*len(str_txt)+' '
screen.addstr(dim[0],dim[1]-count-1, h)
count=0
str_txt=''
screen.refresh()
if s == curses.KEY_ENTER or s==10 or s==13:
dim = screen.getyx()
screen.move(dim[0]+1,0)
screen.refresh()
#if s == curses.KEY_BACKSPACE:
# dim = screen.getyx()
# screen.move(dim[0],dim[1])
# screen.refresh()
if s == ord('\x1b'):
curses.endwin()
break
if __name__ == "__main__":
main()
上記のコードは 1 行目では問題なく動作しますが、2 行目でスペースバーを押すたびに、22 行目で「_curses.error: addstr() が ERR を返しました」というエラーが表示されます。
編集: screen.addstr(dim[0],dim 1 -count-1, h) を screen.addstr(dim[0],dim 1 -count, h) に変更すると、エラーは解消されますが、出力はされません私が欲しいもの。参考までに出力に添付しました。