python 键盘库出现太多字符的问题

问题描述 投票:0回答:1

我正在创建一个自动化程序,复制聚焦单元格的信息并将其保存到变量中。虽然它确实有效,但当我尝试使用

keyboard
库或
pyautogui
write
函数在记事本文档上键入变量时,当字符超过 2 或 4 个时,它会停止工作。当我尝试写入较大数量(例如 9 个字符)时,它开始延迟/滞后。我不知道该怎么办,因为我尝试了很多库,但似乎都不起作用。我需要对程序做的就是将变量写入记事本文档中。

有一个函数可以复制Excel上的焦点单元格并将其保存到全局变量中。之后,它使用

pyautogui
下降一个单元格。这是我当前的代码:

import win32com.client as win32
import pyautogui
import global_variables


def copiar():
    try:
        excel = win32.GetActiveObject("Excel.Application")
    except:
        print("Excel not found.")
        return

    # Obter o nome da planilha ativa
    workbook_name = excel.ActiveWorkbook.Name

    # Se a planilha ativa não for a desejada, você pode abrir a planilha usando o seu caminho
    if workbook_name != 'CONEMB_ZLE.xlsx':
        # Exibe uma mensagem de aviso
        print("Excel not found, open.")
        return

    # Tornar o Excel visível
    excel.Visible = True

    # Selecionar a planilha ativa
    sheet = excel.ActiveSheet

    # Obter o valor da célula selecionada
    global_variables.valor_global = sheet.Application.Selection.Text

    # Imprimir o valor
    #print(global_variables.valor_global)

    # Pressionar a tecla de seta para baixo no teclado
    pyautogui.press('down')

这是将信息粘贴到记事本文档上的代码:

while True:

    focus = pygetwindow.getWindowsWithTitle('CONEMB_ZLE - Excel')[0]
    focus.activate()
    copiar()
    item = global_variables.valor_global
    focus = pygetwindow.getWindowsWithTitle('transportadora - Bloco de notas')[0]
    focus.activate()
    print(item)

    keyboard.write(item)

    sleep(2)

    keyboard.press('enter')

它从 Excel 选项卡开始并复制数据。然后,它会转到“记事本”选项卡,并将包含数据的变量写入记事本文档中。

python keyboard pywin32 pyautogui python-keyboard
1个回答
0
投票

这很简单,你不需要使用

keyboard.write()
函数,只需将变量粘贴进去即可。这里,我决定使用
pyperclip
。当我测试代码时,我注意到
pyperclip.paste()
在终端旁边的不同应用程序中不起作用,所以我想出了一个备份解决方案。首先,将项目复制到剪贴板:

#import pyperclip
pyperclip.copy(item)

然后由您决定如何粘贴它。在这种情况下,您可以使用

keyboard
按 'ctrl+v':

#import pyperclip
pyperclip.copy(item)
keyboard.press_and_release('ctrl+v')

或者,如果失败,您可能想尝试使用

pyautogui.typewrite()

pyautogui.typewrite(item)

我认为复制粘贴方法是最有效的,并且可能会解决延迟问题。

© www.soinside.com 2019 - 2024. All rights reserved.