微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

pyautogui.write 在按下 Tab 键时无法识别 \t 目标:我做了什么:问题:我尝试过的:

如何解决pyautogui.write 在按下 Tab 键时无法识别 \t 目标:我做了什么:问题:我尝试过的:

目标:

我正在尝试使用 openpyxl 从 Excel 单元格读取产品编号(例如 A11841-2 - -),并使用 pyautogui.write 将其写入数据库窗口中的字段。我的原始代码 (https://pastebin.com/6EUFQ09s):

import openpyxl

wb = openpyxl.load_workbook('repack_locns.xlsx')
sheet = wb['r_locn']
sku = sheet.cell(row=2,column=1).value
 
#5 Enter product code into PKMS (cursor should already be where it's supposed to be)
    #and press Enter
import pyautogui
pyautogui.write(sku)

未将信息写入正确的字段(产品代码 A11841-2 中第一个连字符后的数字 2 - - 应在后缀字段中,而不是在样式字段中,如1 中所示) . [注意:我正在使用 Mu 1.1.0.alpha.2 来编写我的代码并从中运行它]

我做了什么:

我首先在 Excel 中查找产品编号中的连字符并将其替换为 \t,从而生成如下产品代码A11841\t2 \t \t。当我简单地从 Excel 单元格中复制产品编号并将其粘贴到代码中时(修改位于 https://pastebin.com/sX1SdV8Q 的第 34 行):

import openpyxl

wb = openpyxl.load_workbook('repack_locns.xlsx')
sheet = wb['r_locn']
sku = 'A11841\t2 \t  \t'
 
#5 Enter product code into PKMS (cursor should already be where it's supposed to be)
    #and press Enter
import pyautogui
pyautogui.write(sku)

并在每一端加上一个单引号,它起作用了!它在按下 Tab 键时读取 \t,并将产品代码输入正确的字段 (2)。然后,我使用我的原始代码从具有此格式更改的原始 Excel 文件的副本中读取数据。

问题:

当产品编号由 pyautogui 写入时,它不会将 \t 识别为 Tab 按下。相反,它只是将它们写为字符 (3)。

我尝试过的:

我使用 pyperclip 尝试在我的代码中包含复制/粘贴步骤,这样我最终可以使其可重复。我使用 openpyxl 从 Excel 单元格中提取,然后在每一端连接单引号。然而,它没有用;同样的问题出现在 pyautogui.write 函数无法将 \t 识别为 Tab 按下而只是将它们写为字符。

我使用了 type()pyautogui.write 所写的内容和我直接从 Excel 复制/粘贴的内容(然后用单引号括起来)都归类为字符串。不知道为什么 \t 在每种情况下都没有得到相同的对待。

解决方法

经验教训:当您遇到问题时,在您的程序中逐行检查输出

这很简单,但我是一个新程序员,所以我没有尽可能快地掌握它,哈哈

sheet.cell(row=2,column=1).value

结果是那段代码吐出的是 'A11841\\t2 \\t \\t' 而不是 'A11841\t2 \t \t'。完全有道理,因为它正在从 Excel 单元格中读取文本 A11841\t2 \t \t。我只是简单地使用了 join()split(),然后使用了 pyautogui.write(),它奏效了!:

sku = sheet.cell(row=2,column=1).value
sku_='\t'.join(sku.split('\\t'))
pyautogui.write(sku_)

正如您在 [1]1 中所见,pyautogui.write() 正确地将 \t 解释为按 Tab。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。