opencv画框返回坐标 python_[python]依靠pynput和pyautogui替换ahk
autohotkey當(dāng)然是不錯(cuò)的工具,但是這個(gè)東西的社群一直發(fā)展的不行。從開始學(xué)習(xí)python以后,我就不時(shí)會(huì)希望能找到別的工具替代ahk。Python的眾多包里面確實(shí)是有對(duì)應(yīng)的工具的:模擬鼠標(biāo)和鍵盤的操作可以用pyautogui,而捕捉熱鍵則可以使用pynput
模擬鼠標(biāo)點(diǎn)擊
這一次的實(shí)例是利用python給aegisub這個(gè)軟件做一個(gè)播放的快捷鍵。在這個(gè)軟件里面,如果你開始輸入字幕以后,想要重新播放選定時(shí)間段的音頻只能通過鼠標(biāo)操作,這實(shí)在是非常累人的事情。這里通過pyautogui的 locateOnScreen來利用按鈕截圖找到按鈕。
import pyautogui def click_play_for_aegis():ori_pos = pyautogui.position()button_play_location = pyautogui.locateOnScreen(r'C:UsersAdministratorPicturesplay_button.jpg',confidence=0.7)click_pos_x = button_play_location.left+int(button_play_location.width/2)click_pos_y = button_play_location.top+int(button_play_location.height/2)pyautogui.click(click_pos_x,click_pos_y)pyautogui.moveTo(ori_pos.x,ori_pos.y)需要注意的是:
pyautogui的文檔可以參考這里https://pyautogui.readthedocs.io/en/latest/
添加快捷鍵
到這里我們還沒有個(gè)上面的功能添加快捷鍵。這個(gè)功能需要依靠pynput這個(gè)包來實(shí)現(xiàn)。(pynput這個(gè)包最近幾年沒有更新了,這是比較可惜的事情),文檔在這里
具體到添加快捷鍵這一部分,pynput有一個(gè)叫做GlobalHotKeys的類可以幫你快速添加快捷鍵,比如像下面的代碼就可以把ctrl+p綁定給剛才定義的函數(shù)click_play_for_aegis
from pynput import keyboard def on_activate_p():click_play_for_aegis()with keyboard.GlobalHotKeys({'<ctrl>+p':on_activate_p}) as h:h.join()接下來只需要運(yùn)行這個(gè)python代碼,然后ctrl+p[1]這個(gè)快捷鍵就可以實(shí)現(xiàn)點(diǎn)擊特定按鈕的功能了。
如果你想知道某一個(gè)按鍵的名稱是什么,那可以參考文檔里面的代碼:
# hotkey name probe0------------------- def on_activate_p():print('windows+p pressed')click_play_for_aegis()with keyboard.GlobalHotKeys({'<win>+' })def on_press(key):try:print('alphanumeric key {0} pressed'.format(key.char))except AttributeError:print('special key {0} pressed'.format(key))def on_release(key):print('{0} released'.format(key))if key == keyboard.Key.esc:# Stop listenerreturn False# Collect events until released with keyboard.Listener(on_press=on_press,on_release=on_release) as listener:listener.join()這樣當(dāng)你按下一個(gè)按鍵的時(shí)候,在python的輸出里就會(huì)寫出對(duì)應(yīng)的名稱了。
參考
總結(jié)
以上是生活随笔為你收集整理的opencv画框返回坐标 python_[python]依靠pynput和pyautogui替换ahk的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 会计行业被计算机取代马云,会计人:为什么
- 下一篇: vue 组件属性监听_vuejs组件内的