窗户。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
,您可以决定回显什么,以及处理编辑行内的左/右光标移动等事情。像编辑模板字符串这样的花哨的东西通常是由更简单的函数构建的。