pynput监听键盘

二、详解
2.1 pynput监听键盘
import pynput.keyboard as keyboard

# 监听键盘
def listen_keybord():
    listener = keyboard.Listener(on_press=onPressed, on_release=onRelease)
    listener.start()
1
2
3
4
5
6
pynput的监听为异步事件,但是会被阻塞,所以如果事件处理事件过长,得用异步处理。

2.2 监听事件
创建了c_equipment类来封装武器信息。
重点在tab键的监听,使用异步来检测装备信息。

def onRelease(key):
    try:
        if '1' == key.char:
            c_equipment.switch = 1 #主武器1
        elif '2' == key.char:
            c_equipment.switch = 2 #主武器2
        elif '3' == key.char:
            c_equipment.switch = 3 #手q switch=3的时候不压q
        elif '4' == key.char:
            c_equipment.switch = 3 #刀具
        elif '5' == key.char:
            c_equipment.switch = 3 #手雷
    except AttributeError:
        if 'tab' == key.name:      #tab键异步操作检测
            asyncHandle()
        elif 'num_lock' == key.name:  #小键盘锁用来控制程序开关
            changeOpen()
        elif 'shift' == key.name:   
            c_contants.hold = False

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2.3 pyautogui截屏
检测装备,首先要在打开装备栏的时候,截屏。

pyautogui.screenshot(region=[x, y, w, h])

x,y分别表示坐标,w,h表示宽度和高度。
截取之后,为了方便对比图片,需要将图片二值化,然后保存到本地。

完整代码如下:

import pyautogui

def adaptive_binarization(img):
    #自适应二值化
    maxval = 255
    blockSize = 3
    C = 5
    img2 = cv2.adaptiveThreshold(img, maxval, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, blockSize, C)
    return img2

# 屏幕截图
def shotCut(x, y, w, h):
    im = pyautogui.screenshot(region=[x, y, w, h])
    screen = cv2.cvtColor(numpy.asarray(im), cv2.COLOR_BGR2GRAY)
    temp = adaptive_binarization(screen)
    return temp
    
def saveScreen():
    screen1 = shotCut(1780, 125, 614, 570)
    cv2.imwrite("./resource/shotcut/screen.bmp", screen1)

————————————————
版权声明:本文为CSDN博主「七号公园的忧伤」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/LookOutThe/article/details/130639025

你可能感兴趣的:(python,开发语言)