首页 > 解决方案 > pywinauto.keyboard.KeySequenceError: `}` 前面应该有 `{`

问题描述

有以下代码,它将生成的密码输出到命令行(使用打印命令)但是当我将生成的密码发送到密码文本框时,我得到了错误

pywinauto.keyboard.KeySequenceError:}应该在前面{

app = Application(backend="uia").connect(title = "SKF Insight Rail Manager")

app.top_window().set_focus()

password = random.choice(string.ascii_lowercase)
password += random.choice(string.punctuation)
password += random.choice(string.ascii_uppercase)
password += random.choice(string.digits)
for i in range(4):
    randomSource = string.ascii_letters + string.digits + string.punctuation
    password += random.choice(randomSource)

标签: keyboardpywinauto

解决方案


花括号是一种转义序列。您需要通过用{}. 在您的情况下,它应该看起来像这样:

password = "{}}" # wrap by {} for send_keys
password += "{{}" # wrap by {} for send_keys
password += random.choice(string.digits)
password += random.choice(string.punctuation)
for i in range(4):
    randomSource = string.ascii_letters + string.digits + string.punctuation
    password += random.choice(randomSource)

# tricky replace is needed for human readable form of password
print("Generated password:" + password.replace('{}}', '}').replace('{{}', '{'))

time.sleep(1)

keyboard.send_keys(password)

关于 send_keys 的文档:https ://pywinauto.readthedocs.io/en/latest/code/pywinauto.keyboard.html


推荐阅读