日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Python 鍵盤/鼠標(biāo)控制

 dinghj 2019-04-26

鍵盤控制


需要用到keyboard模塊(pip install keyboard)


按鍵字符

#字符'1''a'...#控制'ctrl''alt''shift''enter''esc''f1'...#方向鍵'up''down''left''right'#組合按鍵'ctrl'+'alt'+'a'...

常用方法


wait()

監(jiān)聽按鍵,如果沒設(shè)置按鍵,將會一直監(jiān)聽這句之前的按鍵;如果設(shè)置了按鍵,那么在按下該按鍵后就會停止監(jiān)聽,并執(zhí)行后面的語句,舉例:


import keyboard

print(0)
keyboard.wait('a')#在按下a之前后面的語句都不會執(zhí)行,下面同理print(1)
keyboard.wait('b')
print(2)
keyboard.wait('c')
print(3)
keyboard.wait()

結(jié)果:0123#繼續(xù)監(jiān)聽#只有按順序按下abc(中間過程隨便按不干擾)才能輸出0123,但因?yàn)樽詈笠粋€沒設(shè)置按鍵,所以會一直監(jiān)聽下去

add_hotkey()

設(shè)置熱鍵,一般和wait()組合使用,在wait監(jiān)聽下,當(dāng)按下熱鍵時會執(zhí)行對應(yīng)函數(shù),舉例:


import keyboard  #監(jiān)聽鍵盤def test_a():print('aaa')def test(x):print(x)if __name__ == '__main__':
    keyboard.add_hotkey('f1', test_a)#按f1輸出aaakeyboard.add_hotkey('ctrl+alt', test, args=('b',))#按ctrl+alt輸出bkeyboard.wait()#wait里也可以設(shè)置按鍵,說明當(dāng)按到該鍵時結(jié)束

record()

記錄鍵盤事件,如果加上until參數(shù),可以設(shè)置當(dāng)按下某按鍵時結(jié)束監(jiān)聽,和wait方法有點(diǎn)像,舉例:


import keyboard

keyboard.add_hotkey('ctrl', print, args=('aaa',))
keyboard.add_hotkey('alt', print, args=('bbb',))

recorded = keyboard.record(until='esc')#當(dāng)按下esc時結(jié)束按鍵監(jiān)聽,并輸出所有按鍵事件print(recorded)
結(jié)果為:
aaa
aaa
bbb
[KeyboardEvent(ctrl down), KeyboardEvent(ctrl up), KeyboardEvent(ctrl down), 
KeyboardEvent(ctrl up), KeyboardEvent(alt down), KeyboardEvent(alt up),
KeyboardEvent(esc down)]

hook()

綁定所有按鍵事件,當(dāng)只要有按鍵按下/松開時就會觸發(fā)的回調(diào)函數(shù),舉例:


import keyboarddef abc(x):print(x)
    print("111")

keyboard.hook(abc)#按下任何按鍵時,都會調(diào)用abc,其中一定會傳一個值,就是鍵盤事件keyboard.wait()

結(jié)果:
KeyboardEvent(w down)111KeyboardEvent(w up)111KeyboardEvent(space down)111KeyboardEvent(space up)111KeyboardEvent(tab down)111KeyboardEvent(tab up)111KeyboardEvent(ctrl down)111...

KeyboardEvent()

一個按鍵事件,里面有3個常用參數(shù):event_type、scan_code、name,分別代表按鍵類型(down/up)、按鍵號(每個鍵都有對應(yīng)的)和按鍵名,舉例:


import keyboarddef abc(x):a = keyboard.KeyboardEvent('down', 28, 'enter')#按鍵事件a為按下enter鍵,第二個參數(shù)如果不知道每個按鍵的值就隨便寫,#如果想知道按鍵的值可以用hook綁定所有事件后,輸出x.scan_code即可if x.event_type == 'down' and x.name == a.name:
        print("你按下了enter鍵")#當(dāng)監(jiān)聽的事件為enter鍵,且是按下的時候keyboard.hook(abc)# keyboard.hook_key('enter', bcd)# recorded = keyboard.record(until='esc')keyboard.wait()

結(jié)果:

你按下了enter鍵

你按下了enter鍵

更多參考

https:///project/keyboard/


鼠標(biāo)控制


需要用到pyautogui模塊(pip install pyautogui


常用方法


position()

獲取鼠標(biāo)位置,舉例:


import pyautogui as pag    #監(jiān)聽鼠標(biāo)x1, y1 = pag.position()
print(x1, y1) 
#輸出鼠標(biāo)當(dāng)前位置

實(shí)例-結(jié)合鼠標(biāo)鍵盤截圖

(按下兩次alt+ctrl來確定圖片左上角和右上角,然后截圖保存)


import keyboard  #監(jiān)聽鍵盤import pyautogui as pag    #監(jiān)聽鼠標(biāo)from PIL import  ImageGrab   #截圖、讀取圖片、保存圖片if keyboard.wait(hotkey='ctrl+alt') == None:
    x1, y1 = pag.position()if keyboard.wait(hotkey='ctrl+alt') == None:
        x2, y2 = pag.position()
        image = ImageGrab.grab((x1, y1, x2, y2))
        image.save("screen.png")

click()

鼠標(biāo)點(diǎn)擊控制,舉例:


import pyautogui
 
pyautogui.click(button='right')#點(diǎn)擊鼠標(biāo)右鍵pyautogui.click(100, 100)#要在指定位置點(diǎn)擊左鍵





         

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多