【发布时间】:2021-06-13 23:30:41
【问题描述】:
当光标悬停在 tkinter 画布圆角矩形按钮上时,我已经设法调整颜色:
def shade_rgb(rgb):
""" Adjust shade of rgb by 25% (value 64 out of 256)
:param rgb: tuple of red, green, blue integers 0 to 255
:returns: tuple of red, green, blue integers 0 to 255
"""
converted = []
for i in rgb:
if i < 128:
i = i + 64
else:
i = i - 64
converted.append(i)
return tuple(converted)
我已经看到列表理解和元组生成器的代码,我相信它们会大大缩短代码。但是我可以“理解”如何让它发挥作用?
回复评论
“你在哪里卡住了?”
我对生成器的尝试是这样的:
return tuple(i = i + 64 if i<128 else i = i - 64 for i in rgb)
我通常会在 Python 中使用:
i = i + 64
或:
i += 64
但显然在生成器中,你进入了另一个宇宙,物理规则变为:
i + 64
【问题讨论】:
-
物理规则不变;它只是您在数据传输过程中所处的位置。
-
@Prune Ha “数据传输过程”对我来说是另一个宇宙。
-
我不确定 Prune 想说什么,但语法问题是你不能在表达式应该去的地方放置语句 (assignment)(在 conditional expression )。这与我所听到的 C 不同,例如赋值是一个表达式。