【发布时间】:2018-12-30 20:43:22
【问题描述】:
我正在使用以下代码(来自此处How to put text in input line: how to ask for user input on the command line while providing a 'default' answer that the user can edit or delete?)提示用户修改默认字符串(在 Windows 上):
import win32console
_stdin = win32console.GetStdHandle(win32console.STD_INPUT_HANDLE)
def input_def(prompt, default=''):
keys = []
for c in str(default):
evt = win32console.PyINPUT_RECORDType(win32console.KEY_EVENT)
evt.Char = c
evt.RepeatCount = 1
evt.KeyDown = True
keys.append(evt)
_stdin.WriteConsoleInput(keys)
return input(prompt)
if __name__ == '__main__':
name = input_def('Folder name: ', 'it works!!!')
print()
print(name)
我的问题是,有时,一个或多个字符被添加到我的默认字符串中,大部分时间是在开头。也就是说,上面的代码例如会在控制台中显示Folder name: Ait works!!!。
我的keys 变量似乎有正确的长度,所以我猜_stdin 有问题。是在_stdin 初始化为_stdin = win32console.GetStdHandle(win32console.STD_INPUT_HANDLE) 的时候吗?我怎样才能摆脱这些随机字符?
【问题讨论】:
-
@eryksun 就是这样!