python - TypeError: 'tuple' object is not callable 解决方案 - pyautogui
问题描述
我看不出是代码中的问题。
问题:
尝试运行 python 程序并收到错误消息:
TypeError: 'tuple' object is not callable Solution
尝试修复错误
- 查看语法 - 没有发现任何问题。
- 没有看到任何缺少的逗号。
- 没有看到任何不正确的索引语法。
代码
import pyautogui
import keyboard
import time
import random
import win32.lib.win32con as win32con
#Tile 1 position: X= 1018 Y= 159 RGB:(194, 78, 147)
#Tile 2 position: X= 1113 Y= 159 RGB:(3, 255, 255)
#Tile 3 position: X= 1196 Y= 159 RGB:(2, 247, 68)
#Tile 4 position: X= 1289 Y= 159 RGB:(247, 59, 59)
def KEYRIGHT(x,y):
pyautogui.RIGHT
time.sleep(0.01)
def KEYLEFT(x,y):
pyautogui.LEFT
time.sleep(0.01)
def KEYUP(x,y):
pyautogui.keyUp
time.sleep(0.01)
def KEYDOWN(x,y):
pyautogui.keyDown
time.sleep(0.01)
while keyboard.is_pressed('q') == False:
if pyautogui.pixel(1018, 159)(194, 78, 147):
KEYRIGHT(1018, 159)
if pyautogui.pixel(1113, 159)(3, 255, 255):
KEYDOWN(1113, 159)
if pyautogui.pixel(1196, 159)(2, 247, 68):
KEYUP(1196, 159)
if pyautogui.pixel(1289, 159)(247, 59, 59):
KEYRIGHT(1289, 159)
解决方案
该pixel
函数显然返回一个元组。元组和函数调用的参数都使用括号。因此 Python 认为您正在尝试使用 args 调用函数:(194, 78, 147)
显然是红色、绿色和蓝色。但是您似乎想要做的是检查像素返回的值是否等于元组(194, 78, 147)
有些对象是可调用的。例如,您可以创建一个实现的类,def __call__(self, r, g, b)
然后创建一个调用的函数,该函数pixel
返回该实现的对象,__call__
您的代码将在没有语法错误的情况下运行。
但是内置的元组类型没有实现__call__
,所以“'tuple'对象不可调用”
我想这就是你想要的:
if pyautogui.pixel(1018, 159) == (194, 78, 147):
KEYRIGHT(1018, 159)
if pyautogui.pixel(1113, 159) == (3, 255, 255):
KEYDOWN(1113, 159)
if pyautogui.pixel(1196, 159) == (2, 247, 68):
KEYUP(1196, 159)
if pyautogui.pixel(1289, 159) == (247, 59, 59):
KEYRIGHT(1289, 159)
推荐阅读
- javascript - 用百分比计算器创建一个整数
- sql - 如何将亚马逊卖家报告上传到 SQL 数据库?
- python - 将量化的 Pytorch 模型导出到 onnx 时出现分段错误
- android - 在特定时间关闭 App 时安排 Android 功能
- f# - 任何地方都有 option<> 计算表达式吗?
- python - 最大子数组总和 - 我的解决方案哪里错了?Kadane 算法
- c# - Google API Explorer 不会创建 Compute Engine 虚拟机实例
- java - junit 5 自定义参数化测试
- palantir-foundry - 如何获得轮廓中多列的最小值?
- apache - 在 httpd.conf 中加载模块 mod_proxy_cluster.so 时,在 AIX 7.2 powerpc v1.3.0 上出现以下错误))