Python键盘库在输入过多字符时的问题
我正在创建一个自动化程序,它可以复制当前选中的单元格的信息,并把这些信息保存到一个变量里。虽然这个功能可以正常工作,但当我尝试使用 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标签开始,复制数据。然后它切换到记事本标签,并在记事本中写入包含数据的变量。
1 个回答
1
其实很简单,你不需要用 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)
不过我觉得复制和粘贴的方法是最有效的,应该能解决延迟的问题。