场合
所以我正在处理菜单的一些按钮,我正在使用函数来简化过程。 当我调用该函数时,我遇到的问题有9个参数:
def toggleButton(msg, x, y, w, h, c1, c2, toggle, boo):
但我在这里所需要的只是参数c1和c2。 简单来说,它们是按钮在每个二进制状态下的颜色。
在函数内部有一个链接变量“color” 在每个切换状态下,颜色在c1和c2之间交换
问题
现在我们有了一个上下文,我的问题是如何根据实际的颜色知识改变c1和c2的值?
c1 = (r, g, b)
然后我把c1变成:
c1 = (r+10, g+10, b+10)
最初不必知道(r,g,b)?
我尝试使用c1 [0]输出r,但不允许我更改值。
我试图解决这个问题的测试代码是:
colour = (255, 255, 255) ##arbitrary colour
print(colour) ##print the colour, outputs (255, 255, 255)
print(colour[0]) ## print first number, outputs 255
colour[0] = colour[0] - 50 ## code breaks with error "TypeError: 'tuple' object does not support item assignment"
print(colour)
print(colour[0])
修改
我已经得到了上述问题的答案,但这是我发现的一个问题,如果产生的颜色为:
colour = tuple([c+50 for c in colour])
无效,它会中断(显然) 我试过了
for c in colour:
if c > 255:
colour[c] = tuple(255)
解决这个问题,但它不起作用,所以如果有人可以帮助我,这对于防止将来出现错误非常有用,特别是因为我不知道在我的代码使用时会选择哪种颜色最终产品。
答案 0 :(得分:0)
你不能从元组中减去一个int。如果你想从每个颜色元素中减去50,你可以使用
colour = tuple([c-50 for c in colour])
如果要为每个值添加delta,并将结果约束在0到255之间,则可以使用
colour = tuple([max(0, min(255, c+delta)) for c in colour])