簡體   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