窗户。getstr _ 函数从键盘读取新数据(并将其放在屏幕上)。也许您的意思是window.instr,因为您似乎假设您可以回读addstr调用中添加的数据。
该参数item_name未在示例函数中使用。您可以window.addstr使用以及填充下划线将其写入屏幕(未完成)。你可以这样做:
def Edit_Item(stdscr, item_name)
stdscr.addstr(1, 2, "Item Name:" + item_name + "_" )
r = stdscr.getstr(2, 16, 15)
return r
给出的示例将首先将光标移动到2,16屏幕上(超过第 10 列 -的位置item_name)。stdscr.getstr调用不会item_name返回; 它只会返回您使用键盘输入的字符。如前所述,window.instr提供了一种将值item_name和stdscr.getstr调用结合起来的方法。
但是,即使是这种组合也不够,因为stdscr.getstr将从其起点返回字符。因此,例如,您不能在使用addstr. 如果你这样做:
def Edit_Item(stdscr, item_name)
stdscr.addstr(1, 2, "Item Name:" + item_name + "_" )
r = stdscr.getstr(2, 10, 15)
r = stdscr.instr(2, 10, 15)
return r
它会更接近您的意图,但是(未经测试)可能会在您按下时擦除光标位置之后的字符enter。如果您修改了使用的解决方案getch,您可以决定回显什么,以及处理编辑行内的左/右光标移动等事情。像编辑模板字符串这样的花哨的东西通常是由更简单的函数构建的。