Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么赢了';添加pyautogui条件后,我的代码是否正常运行?_Python_Pygame_Pyautogui - Fatal编程技术网

Python 为什么赢了';添加pyautogui条件后,我的代码是否正常运行?

Python 为什么赢了';添加pyautogui条件后,我的代码是否正常运行?,python,pygame,pyautogui,Python,Pygame,Pyautogui,我试图创建一个程序/游戏,你可以在屏幕上画任何东西,程序将检测屏幕上画的东西,并在终端中打印一条语句,我在这里使用pyautogui检测图像,因为它的“信心”参数和pygame,因为我打算稍后将其制作为一个游戏,并且需要其中的一些函数。但是,当我添加pyautogui条件并运行代码时,光标消失,加载光标(macOS上旋转的色轮)出现,不允许我绘制任何东西。cloud_default.png是一个普通云的透明图像,我希望它能够检测到,但我的光标不允许我绘制,当我在屏幕上拖动它时,pyautogui

我试图创建一个程序/游戏,你可以在屏幕上画任何东西,程序将检测屏幕上画的东西,并在终端中打印一条语句,我在这里使用pyautogui检测图像,因为它的“信心”参数和pygame,因为我打算稍后将其制作为一个游戏,并且需要其中的一些函数。但是,当我添加pyautogui条件并运行代码时,光标消失,加载光标(macOS上旋转的色轮)出现,不允许我绘制任何东西。cloud_default.png是一个普通云的透明图像,我希望它能够检测到,但我的光标不允许我绘制,当我在屏幕上拖动它时,pyautogui似乎无法检测到该图像。我该如何解决这个问题?以下是完整的代码:

import pygame
import sys
from pygame.locals import *
import pyautogui
import time

pygame.init()

# COLORS
black = (0, 0, 0)
white = (255, 255, 255)

win_size = (1067, 825)
scr = pygame.display.set_mode(win_size)
scr.fill(white)
pygame.display.set_caption('Draw!(or Die)')


pygame.display.update()

clock = pygame.time.Clock()


draw = False

while True:  # MAIN GAME LOOP
    clock.tick(2048)
    mx, my = pygame.mouse.get_pos()
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
        elif event.type == MOUSEBUTTONDOWN:
            draw = True
        elif event.type == MOUSEBUTTONUP:
            draw = False

        if pyautogui.locateOnScreen('cloud_default.png') is not None:
            print('detected')
            time.sleep(0.1)
        else:
            print('not detected')
            time.sleep(0.1)

        if draw:
            pygame.draw.circle(scr, black, (mx, my), 20)
            pygame.display.update()

您的应用程序无法工作,因为
时间。睡眠(0.1)
。此外,
pyautogui.locateOnScreen
非常耗时。当您尝试在事件循环中加载图像时,您将永远无法平滑地绘制。pygame.image.load不只是加载图像以用于代码吗?如何检测屏幕上是否存在类似于已存在图像的手绘图像?pyautogui还有“confidence”参数,允许用户更自由地绘制类似于源图像的图片(默认为cloud_)。如果有办法使用pygame.image.load,请告诉我
屏幕上的位置
仅检测像素完美匹配。看见但是,它太慢了,无法运行每一帧或事件循环。你是对的,它太慢了,你能为我尝试做的事情推荐其他东西吗?哦,谢谢你的帮助!