Python 文件中的键盘输入延迟

问题描述 投票:0回答:1

嘿,我正在尝试解决一个问题,每当我通过 exe 文件关闭此代码时。我的键盘被延迟,以解决我必须关闭程序窗口或重新打开它的问题。

任何人都可以修复此代码并删除此键盘延迟,因为我对编码仍然陌生。 该怎么办任何人都可以解释一下吗


import keyboard
import pyautogui
import time
import ctypes
import PIL.ImageGrab
import PIL.Image
import winsound 
import os
import mss
from colorama import Fore, Style, init
S_HEIGHT, S_WIDTH = (PIL.ImageGrab.grab().size)
PURPLE_R, PURPLE_G, PURPLE_B = (250, 100, 250)
TOLERANCE = 31
GRABZONE = 10
TRIGGER_KEY = "ctrl + alt"
SWITCH_KEY = "ctrl + tab"
GRABZONE_KEY_UP = "ctrl + up"
BUNNY_KEY = "ctrl + space"
GRABZONE_KEY_DOWN = "ctrl + down"
mods = ["OPERATOR/MARSHAL", "GUARDIAN", "VANDAL/PHANTOM/SHOTGUNS"]
pyautogui.FAILSAFE = False
 
class FoundEnemy(Exception):
    pass
 
class triggerBot():
    def __init__(self) -> None:
        self.toggled = False
        self._bunny = False
        self.mode = 1
        self.last_reac = 0
 
    def toggle(self) -> None: self.toggled = not self.toggled
    def bunnyy(self) -> None: self._bunny = not self._bunny
 
    def switch(self):
        if self.mode != 2: self.mode += 1
        else: self.mode = 0
        if self.mode == 0: winsound.Beep(200, 200)
        if self.mode == 1: winsound.Beep(200, 200), winsound.Beep(200, 200)
        if self.mode == 2: winsound.Beep(200, 200), winsound.Beep(200, 200), winsound.Beep(200, 200)
 
    def click(self) -> None:
        ctypes.windll.user32.mouse_event(2, 0, 0, 0,0) # sol bas
        ctypes.windll.user32.mouse_event(4, 0, 0, 0,0) # sol bırak
 
    def approx(self, r, g ,b) -> bool: return PURPLE_R - TOLERANCE < r < PURPLE_R + TOLERANCE and PURPLE_G - TOLERANCE < g < PURPLE_G + TOLERANCE and PURPLE_B - TOLERANCE < b < PURPLE_B + TOLERANCE
 
    def grab(self) -> None:
        with mss.mss() as sct:
            bbox=(int(S_HEIGHT/2-GRABZONE), int(S_WIDTH/2-GRABZONE), int(S_HEIGHT/2+GRABZONE), int(S_WIDTH/2+GRABZONE))
            sct_img = sct.grab(bbox)
            return PIL.Image.frombytes('RGB', sct_img.size, sct_img.bgra, 'raw', 'BGRX')
 
    def scan(self) -> None:
        start_time = time.time()
        pmap = self.grab()
 
        try:
            for x in range(0, GRABZONE*2):
                for y in range(0, GRABZONE*2):
                    r, g, b = pmap.getpixel((x,y))
                    if self.approx(r, g, b): raise FoundEnemy
        except FoundEnemy:
            self.last_reac = int((time.time() - start_time)*1000)
            self.click()
            if self.mode == 0: time.sleep(0.5)
            if self.mode == 1: time.sleep(0.25)
            if self.mode == 2: time.sleep(0.1)
            print_banner(self)
 
    def bunny(self) -> None:
        while True:
            if keyboard.is_pressed("space"): pyautogui.press("space")
            else: break
def print_banner(bot: triggerBot) -> None:
    os.system("cls")
    print(Style.BRIGHT + Fore.CYAN + "                      🇵​​🇷​​🇮​​🇲​​🇪​ ​🇭​​🇦​​🇨​​🇰​​🇸​ - ​🇵​​🇦​​🇮​​🇩​ ​🇨​​🇭​​🇪​​🇦​​🇹​​🇸​                  " + Style.RESET_ALL)
 
 
 
 
 
 
 
    print("===== Controls =====")
    print("Activate   :", Fore.YELLOW + TRIGGER_KEY + Style.RESET_ALL)
    print("Change Gun  :", Fore.YELLOW + SWITCH_KEY + Style.RESET_ALL)
    print("FOV Circle Size(I Think)  :", Fore.YELLOW + GRABZONE_KEY_UP + "/" + GRABZONE_KEY_DOWN + Style.RESET_ALL)
    print("Bunny Hop  :", Fore.YELLOW + BUNNY_KEY + Style.RESET_ALL)
    print("==== Settings ===")
    print("Gun                  :", Fore.CYAN + mods[bot.mode] + Style.RESET_ALL)
    print("FOV Circle       :", Fore.CYAN + str(GRABZONE) + "x" + str(GRABZONE) + Style.RESET_ALL)
    print("Trigger Bot       :", (Fore.GREEN if bot.toggled else Fore.RED) + ("Enabled" if bot.toggled else "Disabled") + Style.RESET_ALL)
    print("Bunny-Hop         :", (Fore.GREEN if bot._bunny else Fore.RED) + ("Enabled" if bot._bunny else "Disabled") + Style.RESET_ALL)
    print("T-Bot Reactime Time :", Fore.CYAN + str(bot.last_reac) + Style.RESET_ALL + " ms ("+str((bot.last_reac)/(GRABZONE*GRABZONE))+"ms/pix)")                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
 
if __name__ == "__main__":
    bot = triggerBot()
    print_banner(bot)
    while True:
        if keyboard.is_pressed(SWITCH_KEY):
            bot.switch()
            print_banner(bot)
            while keyboard.is_pressed(SWITCH_KEY): pass
        if keyboard.is_pressed(GRABZONE_KEY_UP):
            GRABZONE += 5
            print_banner(bot)
            winsound.Beep(400, 200)
            while keyboard.is_pressed(GRABZONE_KEY_UP): pass
        if keyboard.is_pressed(GRABZONE_KEY_DOWN):
            GRABZONE -= 5
            print_banner(bot)
            winsound.Beep(300, 200)
            while keyboard.is_pressed(GRABZONE_KEY_DOWN): pass
        if keyboard.is_pressed(TRIGGER_KEY):
            bot.toggle()
            print_banner(bot)
            if bot.toggled: winsound.Beep(440, 75), winsound.Beep(700, 100)
            else: winsound.Beep(440, 75), winsound.Beep(200, 100)
            while keyboard.is_pressed(TRIGGER_KEY): pass
        if keyboard.is_pressed(BUNNY_KEY): 
            bot.bunny()
            print_banner(bot)
            if bot._bunny: winsound.Beep(440, 75), winsound.Beep(700, 100)
            else: winsound.Beep(440, 75), winsound.Beep(200, 100)
            while keyboard.is_pressed(BUNNY_KEY): pass
 
        if bot.toggled: bot.scan()
        if bot._bunny:
            if keyboard.is_pressed("space"): bot.bunny()

python tkinter keyboard delay
1个回答
0
投票

您可以在主循环中实现中断条件以允许中断或终止脚本。

if __name__ == "__main__":
    bot = triggerBot()
    print_banner(bot)

    running = True  # Flag to control the main loop

    while running:  # Main loop controlled by the 'running' flag
        if keyboard.is_pressed('q'):  # Press 'q' to exit the loop and terminate the script
            running = False
            break
    # Rest of your code 
    driver.quit()
© www.soinside.com 2019 - 2024. All rights reserved.