如何在PyWinAuto的type_keys方法中同时使用Python变量和按键命令?
在PyWinAuto的type_keys中同时使用变量和特殊按键命令的解决方案
你遇到的问题是PyWinAuto的type_keys方法用{}标记特殊按键(比如{ENTER}),而Python f-string同样用{}解析变量,两者语法冲突导致报错。以下是几种可行的解决办法:
方法1:转义f-string中的特殊按键大括号
在f-string里用双大括号{{}}来表示PyWinAuto需要的单大括号,这样f-string会把{{ENTER}}解析成{ENTER}传递给type_keys:
name = "chris" app = application.Application(backend="uia").start("Notepad.exe") writer_app = app.UntitledNotepad.child_window(title="Text Editor", auto_id="15", control_type="Edit").wrapper_object() writer_app.type_keys(f"hi {name}" "{{ENTER}}" "bye")
方法2:拆分字符串拼接
将变量替换部分和特殊按键部分分开处理,再拼接成完整的输入字符串:
name = "chris" app = application.Application(backend="uia").start("Notepad.exe") writer_app = app.UntitledNotepad.child_window(title="Text Editor", auto_id="15", control_type="Edit").wrapper_object() writer_app.type_keys(f"hi {name}" + "{ENTER}" + "bye")
方法3:分多次调用type_keys
如果逻辑更清晰,也可以拆分多次调用type_keys,分别处理变量文本和特殊按键:
name = "chris" app = application.Application(backend="uia").start("Notepad.exe") writer_app = app.UntitledNotepad.child_window(title="Text Editor", auto_id="15", control_type="Edit").wrapper_object() writer_app.type_keys(f"hi {name}") writer_app.type_keys("{ENTER}") writer_app.type_keys("bye")
内容的提问来源于stack exchange,提问作者Christopher Denq
相关产品推荐
相关产品推荐

