【问题标题】:Why does this line of code produce the TypeError: 'tuple' object cannot be interpreted as an integer为什么这行代码会产生 TypeError: 'tuple' 对象不能被解释为整数
【发布时间】:2019-08-23 14:41:26
【问题描述】:

我正在尝试为某些监控软件打印屏幕截图的颜色值。为此,我使用了 autopy,在他们的网站上有以下命令用于提取像素的 rgb 值。

autopy.color.hex_to_rgb(autopy.screen.get_color(100, 100))

我对 Python 或 autopy 了解不多,因此非常感谢您的帮助

编辑:这是完整的错误信息:

Traceback(最近一次调用最后一次): 文件“Scr.py”,第 12 行,在 autopy.color.hex_to_rgb(autopy.screen.get_color(100, 100)); TypeError: 'tuple' 对象不能被解释为整数

【问题讨论】:

  • 错误可能意味着get_color() 返回元组(R,G,B)hex_to_rgb() 需要单个整数值。使用print( autopy.screen.get_color(100, 100)) 看看你会得到什么。
  • 这是可能的,但我从 pypi.org/project/autopy 那里得到了这句话
  • 他们在示例中犯了错误 - 或者它是旧示例,目前 get_color() 工作方式不同。对我来说print( autopy.screen.get_color(100, 100) ) 给了(238, 238, 236) 而我不需要autopy.color.hex_to_rgb()
  • 我向作者发送了有关此问题的消息:mistake in example autopy.color.hex_to_rgb(autopy.screen.get_color(1, 1))

标签: python image autopy


【解决方案1】:

autopy.screen.get_color(100, 100) 你得到像(128, 128, 128) 这样的元组 它已经在RGB 中。如果你需要它的十六进制试试这个:

autopy.color.rgb_to_hex(*autopy.screen.get_color(100, 100))

编辑: (2019.09.14)

几周前,我向作者发送了有关此问题的消息

见:mistake in example autopy.color.hex_to_rgb(autopy.screen.get_color(1, 1))

现在他回答说,在下一个主要版本中,这将像教程一样工作。

【讨论】:

  • 哦,哇,根据他们在网站上所说的,我认为 get_color 应该是十六进制的,但你是绝对正确的。非常感谢。
  • 我从这个模块的作者那里得到了答案,在下一个主要版本中这将像教程一样工作。见:autopy/issues/34
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-14
  • 2017-08-01
  • 2021-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多