python - 宏程序不起作用

标签 python python-3.x macros pygame keypress

我一直在寻找一种制作自动点击器的方法,因为我没有任何通过宏在 Python 中点击/输入的经验。我希望程序能够检测到我按下按钮 (F1) 并开始不断单击,直到按下停止按钮 (F2);不幸的是,我的代码不会输出 cps 变量以及 x 和 y 变量。我只需要能够检测到它在那里工作即可继续我的实际点击。

基本上,我问的是如何修复按键检测。 Python版本:3.6.5

编辑:我知道它会检查 1 和 2,按下 f1 时会打开一个 python 帮助屏幕 - 所以现在我只做 1 和 2

import random, pygame, pyautogui, time 
loop = 1
on = 0
pygame.init()
while(loop == 1):
    key = pygame.key.get_pressed()
    if(key[pygame.K_1]):
        on = 1
    elif(key [pygame.K_2]):
        on = 0
    if(on == 1):
        x,y = pygame.mouse.get_pos()
        cps = random.randint(10,20)
        print(cps, x,y)

最佳答案

定义用户事件并调用pygame.time.set_timer将此事件作为第一个参数,pygame 将在指定的时间间隔后开始将事件添加到队列中。

import random
import pygame as pg


pg.init()
screen = pg.display.set_mode((640, 480))
clock = pg.time.Clock()
BG_COLOR = pg.Color('gray12')
CLICK_EVENT = pg.USEREVENT + 1

done = False
while not done:
    for event in pg.event.get():
        if event.type == pg.QUIT:
            done = True
        elif event.type == pg.KEYDOWN:
            if event.key == pg.K_1:
                pg.time.set_timer(CLICK_EVENT, 1000)  # Start the timer.
            elif event.key == pg.K_2:
                pg.time.set_timer(CLICK_EVENT, 0)  # Stop the timer.
        elif event.type == CLICK_EVENT:
            print(random.randint(10, 20), pg.mouse.get_pos())

    screen.fill(BG_COLOR)
    pg.display.flip()
    clock.tick(30)

pg.quit()

关于python - 宏程序不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50752579/

相关文章:

python - 如何在Python Gensim中从主题分布比较两个文档之间的主题相似度?

python pip : Can't install matplotlib (ConnectTimeoutError)

python - 如何循环遍历多个sklearn分类模型?

python - 检测并处理通过 Python 中的 os.system 调用生成的 LaTeX 警告/错误

python-3.x - 是否可以使用 Python tarfile 读取和附加到 tar

python - 从 python 中的一个变量复制字符串的另一种可能的方法

c - 如何在 C 的宏中多次调用一个函数?

c++ - 如何使用模板而不是宏来创建具有动态数量函数的类

c++ - 通过 DEBUG 标志允许 printf

python - 为什么 cv2 显示空白的灰色方 block ?