我对编程很陌生,我正在尝试用 python3 编写一个程序来定位屏幕上的特定图片。图片是字母表中的字母,我正在尝试编写一个 for 循环来覆盖所有字母,而不是每次都写出来。
我已经设法使它适用于单个字母,但是当我尝试运行它时,它会吐出错误
“类型错误:‘类型’对象不可下标”
不确定这意味着什么,但此外,当尝试在每次迭代中更改文件路径时,它包含撇号,从而弄乱了文件路径。
这个作品-
LETTERSONBOARD = [ ]
Letter_A =(list (pyautogui.locateAllOnScreen(r'C:\Users\Letter_A.png'))
LetA = [ ]
for a in Letter_A:
LetAC.append(pyautogui.center(a))
for a in LetA:
LETTERSONBOARD.append(a)
print (LetA)
这不是——
ALPHABET = ['A', 'B', ..., 'Z']
LETTERSONBOARD = []
for xx in ALPHABET:
Letter_[xx] =(list (pyautogui.locateAllOnScreen(r'C:\Users\Letter_'+str[xx]+'.png',))
Let[xx] = []
for aa in Letter_[xx]:
Let[xx].append(pyautogui.center(aa))
for bb in Let[xx]:
LETTERSONBOARD.append(bb)
print (Let[xx])
该错误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
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句