相对颜色变化
Relative colour changing
情况
所以我正在为菜单设计一些按钮,我正在使用功能来简化流程。
当我调用该函数时,我遇到问题的类型有 9 个参数:
def toggleButton(msg, x, y, w, h, c1, c2, toggle, boo):
但是我这里的问题只需要参数 c1 和 c2。
简而言之,它们是按钮在每个二进制状态下的颜色。
函数内部有一个链接变量"colour"
在 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)
解决这个问题,但它不起作用,所以如果有人能帮助我,这对于防止将来出现错误非常有用,尤其是当我不知道我的代码是什么颜色时会被选择用于最终产品。
您不能从元组中减去整数。如果你想从每个颜色元素中减去 50,你可以使用
colour = tuple([c-50 for c in colour])
如果要为每个值添加增量,并将结果限制在 0 到 255 之间,可以使用
colour = tuple([max(0, min(255, c+delta)) for c in colour])
情况
所以我正在为菜单设计一些按钮,我正在使用功能来简化流程。 当我调用该函数时,我遇到问题的类型有 9 个参数:
def toggleButton(msg, x, y, w, h, c1, c2, toggle, boo):
但是我这里的问题只需要参数 c1 和 c2。 简而言之,它们是按钮在每个二进制状态下的颜色。
函数内部有一个链接变量"colour" 在 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)
解决这个问题,但它不起作用,所以如果有人能帮助我,这对于防止将来出现错误非常有用,尤其是当我不知道我的代码是什么颜色时会被选择用于最终产品。
您不能从元组中减去整数。如果你想从每个颜色元素中减去 50,你可以使用
colour = tuple([c-50 for c in colour])
如果要为每个值添加增量,并将结果限制在 0 到 255 之间,可以使用
colour = tuple([max(0, min(255, c+delta)) for c in colour])