首页 > 解决方案 > 我使用 pyautogui 为 CS:GO 创建了一个 python 绑定,但它不起作用

问题描述

我创建了一个简单的绑定脚本。它适用于 IDLE Python,但不适用于 CS:GO。你知道为什么吗?

也许它必须在后台才能工作?

import keyboard
import pyautogui
import time
def EventListen():
    while True:
        try:
            if keyboard.is_pressed('n'):
                pyautogui.press('`')
                pyautogui.typewrite('say EZ')
                pyautogui.press('enter')
                pyautogui.press('`')
                EventListen()
        except:
            EventListen()
EventListen()

标签: python

解决方案


我认为没有必要使用pyautogui,因为您已经在使用keyboard它足以执行您需要的任务。我对您的代码进行了一些更改

import time
import keyboard

def EventListen():
    while True:
        try:
            if keyboard.is_pressed('n'):
                keyboard.press('`')
                keyboard.write('say EZ')
                keyboard.press('enter')
                keyboard.press('`')
            elif keyboard.is_pressed('/'): #add something to end the process
                break
        except:
            EventListen()
        time.sleep(0.001)

EventListen()

无需在 while 循环中调用该函数,因为它无论如何都会无限执行,除非您终止该进程。我不明白为什么脚本不会在后台运行,事实上我正在输入这个

n`say EZ
`

使用脚本。可能的情况是您之前的程序连续运行,导致 CPU 使用率过高,这可能与游戏的需求竞争。我建议您在 while 循环的每次迭代之前添加一个小延迟,在这种情况下,我添加了 1 毫秒的延迟,这将导致 CPU 使用率显着降低。我不确定这是否解决了您的问题,因为我无法重现您的确切情况,如果有帮助,请告诉我。

编辑:我忘了提,我添加了另一个绑定,它将使程序跳出循环,因此在按下键keyboard.is_pressed('/')时终止它。/您可以根据需要更改此设置。如果您不想要任何其他绑定(我不推荐),那么您可以依靠手动终止任务。


推荐阅读