繁体   English   中英

Python 中的按键

[英]Key Presses in Python

是否有可能让系统看起来按下了一个键,例如我需要让A键被按下数千次,而手动完成它很耗时,我想写点东西做对我来说,我唯一熟悉的就是 Python。

更好的说法是,我需要模拟按键,IE 无法捕获按键。

更多信息(根据要求):我正在运行 Windows XP,需要将密钥发送到另一个应用程序。

安装pywin32扩展。 然后您可以执行以下操作:

import win32com.client as comclt
wsh= comclt.Dispatch("WScript.Shell")
wsh.AppActivate("Notepad") # select another application
wsh.SendKeys("a") # send the keys you want

搜索 WScript.Shell 对象的文档(我相信在所有 Windows XP 安装中默认安装)。 也许你可以从这里开始。

编辑:发送 F11

import win32com.client as comctl
wsh = comctl.Dispatch("WScript.Shell")

# Google Chrome window title
wsh.AppActivate("icanhazip.com")
wsh.SendKeys("{F11}")

您还可以使用 PyAutoGui 发送虚拟按键。

这是文档: https : //pyautogui.readthedocs.org/en/latest/

import pyautogui


pyautogui.press('Any key combination')

您还可以发送诸如 shift 键或 enter 键之类的键:

import pyautogui

pyautogui.press('shift')

Pyautogui 也可以像这样发送直接文本:

import pyautogui

pyautogui.typewrite('any text you want to type')

至于按“A”键 1000 次,它看起来像这样:

import pyautogui

for i in range(999):
    pyautogui.press("a")

alt-tab 或其他需要同时按下多个键的任务:

import pyautogui

# Holds down the alt key
pyautogui.keyDown("alt")

# Presses the tab key once
pyautogui.press("tab")

# Lets go of the alt key
pyautogui.keyUp("alt")

AutoHotKey非常适合此类任务(键盘自动化/重新映射)

发送“A”100次的脚本:

Send {A 100}

就这样

编辑:将密钥发送到特定应用程序:

WinActivate Word
Send {A 100}

检查具有许多功能的此模块键盘。安装它,也许使用以下命令:

pip3 install keyboard

然后使用此代码:

import keyboard
keyboard.write('A',delay=0)

如果您想多次写入“A”,则只需使用循环即可。
注意
整个窗口都将按下“A”键。意味着脚本正在运行并且您转到浏览器,脚本将在那里开始编写。

在发送按键事件之前将首选窗口设置为前景的替代方法。

hwnd = win32gui.FindWindowEx(0,0,0, "App title")
win32gui.SetForegroundWindow(hwnd)

如果您的平台是 Windows,我实际上不会推荐 Python。 相反,请查看Autohotkey 相信我,我喜欢 Python,但在这种情况下,宏程序是完成这项工作的理想工具。 Autohotkey 的脚本编写很不错(在我看来),但是模拟输入的简便性将为您节省无数时间。 Autohotkey 脚本也可以“编译”,因此您不需要解释器来运行脚本。

另外,如果这是为了网络上的东西,我推荐iMacros 它是一个火狐插件,因此与网站有更好的集成。 例如,您可以说“以这种形式写 1000 个‘a’”,而不是“在 (319,400) 处模拟鼠标单击,然后按 1000 次‘a’”。

对于 Linux,不幸的是,我无法找到一种轻松创建键盘/鼠标宏的好方法。

PyAutoGui 还允许您多次按下按钮:

pyautogui.press('tab', presses=5)   # press TAB five times in a row

pyautogui.press('A', presses=1000)   # press A a thousand times in a row

有一个解决方案:

import pyautogui
for i in range(1000):
    pyautogui.typewrite("a")
import keyboard

keyboard.press_and_release('anykey')

您可以使用 pyautogui 模块,该模块可用于自动移动鼠标和按键。 它也可以用于一些 GUI(非常基本)。 您可以执行以下操作:- import pyautogui pyautogui.press('A') # presses the 'A' key

如果你想做1000次,那么你可以使用while循环

希望这有帮助:)

你可以使用我写的这段代码,它会按“a”键 1000 次

import pyautogui 
loop = 1
while loop <= 1000: 
  pyautogui.press("a")
   loop += 1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM