Python3.6 и Pyautogui — команды Pixel — TypeError: __new__() принимает 4 позиционных аргумента, но дано 5

Я относительно новичок в Python, и я пытаюсь сделать забавный небольшой проект, используя Пьяаутоги и Python3.6. Цель этого проекта — создать проект на основе tensorflow, который учит играть в шахматы. Проблема, с которой я сейчас сталкиваюсь, заключается в том, что всякий раз, когда я пытаюсь использовать любую из команд пиксель, например. pyautogui.pixel(...) или screenshot.getpixel(...) - выскакивает ошибка и говорит следующее:

Traceback (most recent call last):
  File "main.py", line 109, in <module>
    Score()
  File "main.py", line 100, in Score
    if gui.pixelMatchesColor(tempX, tempY, (87, 83, 82), tolerance=20):
  File "/Users/student/Library/Python/3.6/lib/python/site-packages/pyscreeze/__init__.py", line 413, in pixelMatchesColor
    pix = pixel(x, y)
  File "/Users/student/Library/Python/3.6/lib/python/site-packages/pyscreeze/__init__.py", line 436, in pixel
    return RGB(*screenshot().getpixel((x, y)))
TypeError: __new__() takes 4 positional arguments but 5 were given

Я просто хочу отметить, что все остальные команды работают нормально, а не работают только команды пиксель.

Я установил все, включая pyautogui(duh), pyscreeze, pymsgbox, pytweening, xlib, opencv и любой другой пакет, о котором только мог подумать. Они были установлены с помощью этой команды: pip3 установитьимя-пакета-здесь--Пользователь. Мне нужен --Пользователь, потому что в настоящее время у меня нет прав администратора на моем компьютере, поэтому мне интересно, может ли это иметь какое-то отношение к моему нынешнему затруднительному положению.

Я также столкнулся с более ранним сообщением в своем поиске ответа, но забыл, где его нашел, поэтому извините, но я не могу связать его, но в основном там говорилось, что я должен пройти и удалить все папки тайник. Я сделал это с помощью команды терминала в папке ~/Library/Python/3.6:

find . -name "__pycache__" -type f -o -name "__pycache__" -type d -exec rm -rf {} \

Мне не нужно точное решение этой проблемы, но мне интересно, есть ли способ использовать функцию pyautogui.pixelMatchesColor(...) или любой аналог, который вы порекомендуете, которая может иметь допуск - например. что значения RGB могут отличаться на 10 единиц и по-прежнему возвращать истинный.

Для тех из вас, кто заинтересован, вот мой полный код:

#
# IMPORT ALL NECESSARY THINGS
#

import os, time, sys, pyautogui as gui, argparse as arg

#
# FAILSAFES
#

gui.FAILSAFE = True
gui.PAUSE = 0.1

#
# SET UP ARGUMENT PARSER
#

parser = arg.ArgumentParser(description='A machine learning script powered by TensorFlow designed to be run on "chess.com" using Python.')
parser.add_argument("-s", "--sleep", nargs='?', type=int, default='5', help='Number of seconds that the program should sleep before starting. This gives you time to move over to the website before the program looks for the gamboard on screen.')
args = parser.parse_args()

#
# ASKS USER FOR WHAT SIDE IT IS ON
#

side = input("Are you white or black?  ")

if side == "W" or side == "w" or side == "white" or side == "White":
     side = "W"
elif side == "B" or side == "b" or side == "black" or side == "Black":
    side = "B"
else:
    print("Invalid selection for which side!")
    side = None
    sys.exit(0)

#
# PRINT "READY" AND THEN WAIT FOR SPECIFIED AMOUNT OF TIME - DEFAULT 5 SECONDS
#

print("Ready! Waiting for " + str(args.sleep) + " seconds!")
time.sleep(int(args.sleep))

#
# GET AREA OF GAMEBOARD ON SCREEN
#

if side == "W":
    gameboard = gui.locateOnScreen('./img/white/chessboard_white.png', confidence=0.55, grayscale=True)
    left = gameboard.left - 10
    top = gameboard.top - 5
    right = gameboard.left + gameboard.width + 10
    bottom = gameboard.top + gameboard.height + 15
elif side == "B":
    gameboard = gui.locateOnScreen('./img/black/chessboard_black.png', confidence=0.55, grayscale=True)
    left = gameboard.left - 10
    top = gameboard.top - 5
    right = gameboard.left + gameboard.width + 10
    bottom = gameboard.top + gameboard.height + 15

widthInterval = (right - gameboard.left) / 8
heightInterval = (bottom - gameboard.top) / 8

#
# DEFINES A FUNCTION THAT COUNTS THE SCORE 
# - NUMBER OF YOU SIDE AND THEN SUBTRACT THE NUMBER OF OPPOSITE SIDE
#

def Score():
    for i in range(8):
        for j in range(8):
            tempX = 32 + (i * widthInterval)
            tempY = 32 + (j * heightInterval)
            if gui.pixelMatchesColor(tempX, tempY, (87, 83, 82), tolerance=20):
                print("True!")
    
    if side == "W":
        print("White!")
    elif side == "B":
        print("Black!")


Score()

Примечание. Проблема возникает в последних 10 строках приведенного выше кода.

Большое спасибо за вашу помощь, и, пожалуйста, не стесняйтесь, дайте мне знать, если вам нужна дополнительная информация от меня! Максимум

Эта ошибка тоже связана с тем, что pyscreeze не может получить пиксели.

Camden 11.03.2019 22:43
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
1
281
0

Другие вопросы по теме