【问题标题】:Type Error: invalid color argument & For Looping类型错误:无效的颜色参数和 For 循环
【发布时间】:2020-07-01 14:47:38
【问题描述】:

运行此代码时出现“无效颜色参数”:

pygame.draw.rect(screen, teamcolors[0][1], button_1)
pygame.draw.rect(screen, teamcolors[1][1], button_2)
pygame.draw.rect(screen, teamcolors[2][1], button_3)
pygame.draw.rect(screen, teamcolors[3][1], button_4)

teamcolors 是从 csv 文件导入的 RGB 元组列表,如下所示:

(50, 255, 255)
(0, 100, 225)
(200, 200, 0)
(0, 0, 150)

以此类推,总共有 15 行这样的行。

两个问题:

  1. 如何避免无效颜色参数错误?
  2. 如何循环遍历draw.rect 语句,而不是一一执行?我不知道如何迭代“button_1”、“button_2”,因为它不允许我使用变量作为其中的按钮编号。

【问题讨论】:

  • csv 文件与上面不同——它包含 15 行,每行 2 个 RGB 元组,带有适当的逗号。

标签: python for-loop colors


【解决方案1】:

你应该有一个列表按钮。

buttons = [button_1, button_2, button_3, button_4]

for i in range(4):
    pygame.draw.rect(screen, teamcolors[i][1], buttons[i])

或者更好

for button, color in zip(buttons, teamcolors):
    pygame.draw.rect(screen, color[1], button)

至于为什么会出现无效颜色错误,teamcolors 究竟是什么样的? teamcolors[0][1] 是一个合适的Color 值吗?

【讨论】:

  • 一个列表——我应该想到的。谢谢。至于无效的颜色错误,仍然不确定,但它不再发生了。该列表仅包含两个元组的行,例如 [(0, 0, 0), (100, 100, 100)],...
  • 使用teamcolors[i][1]color[1],您不会传递整个元组;你只传递了元组的绿色部分。使用teamcolors[i]color 作为rect 的第二个参数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-26
  • 2016-10-23
  • 2023-04-09
相关资源
最近更新 更多