Ошибка TypeError: 'type' object is not subscriptable
указывает на то, что вы пытаетесь использовать квадратные скобки для объекта, который не поддерживает это. Обычно «подписка» - это способ доступа к значениям словаря.
Я вижу в вашем коде, что вы используете Letter_[xx]
, но не вижу, где вы определили Letter_
в качестве словаря. Вы можете попытаться исправить это, добавив Letter_ = {}
перед верхним циклом.
Несколько других советов:
- Вы заполняете
LETTERSONBOARD
, но, кажется, вы никогда его не используете.
- Вы создаете множество списков и словарей. Подумайте о том, что вам действительно нужно. Какая информация вас интересует, когда весь фрагмент кода будет запущен?
- Подумайте об использовании правильных имен переменных, которые на самом деле говорят вам, что они содержат. Это сделает ваш код намного проще для понимания. Не только для других, но и для себя.
Вот ваш код, переписанный с лучшей структурой и именами переменных. Обратите внимание, что я не проверял это.
ALPHABET = list("ABCDEFGHIJKLMNOPQRSTUVWXYZ")
FoundLetter = namedtuple("FoundLetter", ["letter", "center_x", "center_y"])
found_letters = []
for letter in ALPHABET:
letter_image = "C:\\Users\\Letter_{}.png".format(letter)
for found_letter in pyautogui.locateAllOnScreen(letter_image):
center = pyautogui.center(found_letter)
finding = FoundLetter(letter, center.x, center.y)
found_letters.append(finding)
Теперь found_letters
содержит список объектов, предлагающих поля letter
, center_x
и center_y
.