gpt4 book ai didi

python - _curses.error : addstr() returned ERR

转载 作者:太空宇宙 更新时间:2023-11-03 15:06:16 28 4
gpt4 key购买 nike

我正在尝试使用 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()

上面的代码在第一行工作正常,然而,在第二行,每当我按下空格键时,我在第 22 行收到一个错误,说“_curses.error: addstr() 返回了 ERR”

编辑:当我将 screen.addstr(dim[0],dim 1 -count-1, h) 更改为 screen.addstr(dim[0],dim 1 -count, h) 时,错误被消除但输出这不是我想要的。我已附上输出供您引用。

enter image description here

最佳答案

if s != ord(' ') and s != ord('\x1b') and s != curses.KEY_BACKSPACE:
str_txt += chr(int(s))
count+=1

我认为 if 语句也针对回车符和\或换行符执行,所以我认为由于第一行,你的计数比你预期的多 1。

addstr() 返回的 ERR 异常是因为光标被移出屏幕(越界)是由于:

screen.addstr(dim[0],dim[1]-count-1, h)

由于第一行末尾的回车符 (\r),您的计数为 +1。第一个 if 应该检查这个而不是增加计数。尝试将这些检查 s!=curses.KEY_ENTER and s!=10 and s!=13 添加到第一个 if 中,看看是否有帮助。 s!=10 将检查新行字符 (\n)(在这种情况下可能没有必要,但我是强制症患者)。 s!=13 将检查回车符 (\r)。

关于python - _curses.error : addstr() returned ERR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32293981/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com