首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于pyautogui /键盘模块python的关闭按钮

用于pyautogui /键盘模块python的关闭按钮
EN

Stack Overflow用户
提问于 2022-09-30 11:30:22
回答 2查看 87关注 0票数 -1

我有一个发送垃圾邮件的程序,但是我需要做一个能阻止循环的热键,我该怎么做呢?

我尝试使用故障安全来实现这一点,而True等待键,add_hotkey,但是它不起作用

(对俄文的评论很抱歉。)

代码语言:javascript
复制
import codecs
import sys
import time
from pathlib import Path
import colorama
import keyboard
from Tools.i18n.makelocalealias import pprint
from art import text2art
import yaml
import pyautogui as pag
pag.FAILSAFE = True
colorama.init()

# Клавиша для активации
hotkey = "9"
# Клавиша для открытия чата
open_hotkey = "shift+t"
# Включить кнопку открытия чата
enable_open_chat_hotkey = True
# Клавиша для отправки сообщения
send_msg_hotkey = "enter"
# Интервал между символами
character_interval = 0
# Интервал между сообщениями
interval = 0.15

close_hotkey = "H+J"


can_run = True

def initConfig():
    global hotkey, open_hotkey, enable_open_chat_hotkey, send_msg_hotkey, character_interval, interval, close_hotkey
    if Path("config.yml").is_file():
        with codecs.open('config.yml', encoding="UTF-8") as f:
            loadedConfig = yaml.safe_load(f)
            hotkey = loadedConfig['hotkey']
            open_hotkey = loadedConfig['open_hotkey']
            enable_open_chat_hotkey = loadedConfig['enable_open_chat_hotkey']
            send_msg_hotkey = loadedConfig['send_msg_hotkey']
            character_interval = loadedConfig['character_interval']
            interval = loadedConfig['interval']
            close_hotkey = loadedConfig['close_hotkey']

            print(
                f"Клавиша активации: {hotkey}\n"
                f"Клавиша открытия чата (если включено): {open_hotkey}\n"
                f"Включить ли клавишу для открытия чата в играх?: " + ("Нет", "Да")[enable_open_chat_hotkey] + "\n"
                f"Интервал между символами: {character_interval}\n"
                f"Интервал между сообшениями (рекомендуем оставить 0.2, меньше Дота не тянет): {interval}\n"
                f"Клавиша деактивации: {close_hotkey}\n"
            )

def main():
    print(text2art("1000-7      SCRIPT", "standart"))

    print(
        "Привет, твои текущие настройки программы: \n")
    initConfig()

    keyboard.add_hotkey(hotkey, lambda: print_1000_7())


    keyboard.wait()

def invert_run():
    global can_run
    can_run = not can_run
    print(can_run)

def print_1000_7():
    print("What is 1000-7?")
    if enable_open_chat_hotkey:
        keyboard.press_and_release(open_hotkey)
        keyboard.press_and_release('ctrl+a')
        keyboard.press_and_release('backspace')
        time.sleep(interval)

    keyboard.write("What is 1000-7?", character_interval)
    keyboard.press_and_release(send_msg_hotkey)

    keyboard.press_and_release('ctrl+a')
    keyboard.press_and_release('backspace')
    keyboard.press_and_release('F9')
    keyboard.write("What is 1000-7?")
    keyboard.press_and_release(send_msg_hotkey)
    if enable_open_chat_hotkey:
        keyboard.press_and_release(open_hotkey)

    for i in range(5):
        if not can_run:
            return
        print(5 - i)
        if enable_open_chat_hotkey:
            keyboard.press_and_release(open_hotkey)
            keyboard.press_and_release('ctrl+a')
            keyboard.press_and_release('backspace')
            time.sleep(interval)
        keyboard.write(str(5-i), character_interval)
        keyboard.press_and_release(send_msg_hotkey)
        time.sleep(1)

    x = 1000
    while x > 0:
        if not can_run:
            return
        var = x - 7
        if enable_open_chat_hotkey:
            keyboard.press_and_release(open_hotkey)
            keyboard.press_and_release('ctrl+a')
            keyboard.press_and_release('backspace')
            time.sleep(interval)
        keyboard.write(f"{x} - 7 = {var}", character_interval)
        # print(f"{x} - 7 = {var}")
        x = var
        time.sleep(interval)
        keyboard.press_and_release(send_msg_hotkey)


if __name__ == '__main__':
    main()
    while True:
        keyboard.wait(close_hotkey)
        invert_run()
EN

回答 2

Stack Overflow用户

发布于 2022-10-04 12:53:00

我对python还不熟悉,所以我确信这不是最好的答案,我也能理解你想要创建一个ON\OFF热键,我以前也想在某个程序中这样做,所以我确保只有当变量a==True和我做了一个热键来改变'a‘时,我的整个程序才能运行,所以你也能这么做吗?我的意思是,只有当'a‘变量设置为True时,才能使整个代码工作。

当然,如果在其中一个垃圾邮件中有一个‘then’循环,那么我不确定这是否有效……

代码语言:javascript
复制
a=True
def b():
    global a
    while a :
        sleep(0.10)
        keyboard.press_and_release('F2')
        for i in range(45):
            sleep(0.1)
            if keyboard.is_pressed('e') :#this is my fail-safe cuz in my program
                                         #i didnt want to wait for the full 4.5 sec in case i wanted to stop
                a=False
        keyboard.press_and_release('f')
        sleep(0.1)
        
b()
while not a:
    if keyboard.is_pressed('e') :
            a=True
            sleep(0.5)
            b()

或者是另一个版本的

代码语言:javascript
复制
a=True

def Endb():
    global a
    if a==False:
        a=True
    else:
        a=False
        
keyboard.add_hotkey('e',lambda: Endb())

def b():
    global a
    while a :
        sleep(0.10)
        keyboard.press_and_release('F2')
        for i in range(45):
            sleep(0.1)
        keyboard.press_and_release('f')
        sleep(0.1)


b()
while True :
    if keyboard.is_pressed('e'):
        Endb()
        b()

当我按“e”作为开关时,它就会停止,这样就省去了把if keyboard.is_pressed('e'): a=False放在每一步的麻烦,以防我有像你这样长的代码。

票数 0
EN

Stack Overflow用户

发布于 2022-10-06 10:21:18

我解决了这个问题,我只使用keyboard.add_hotkey(hotkey, lambda: on_off(), suppress=True)

代码语言:javascript
复制
def on_off():
  global enabled
  enabled = not enabled
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73908048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档