【发布时间】:2018-04-16 21:15:25
【问题描述】:
我正在使用 Python 3.6.1。 我需要获取使用 Tkinter askcolor 方法选择的颜色的 RGB 值的字符串(或 int 值)。 我的代码:
from tkinter.colorchooser import askcolor
color = askcolor()
rgb_tuple = color[0] #gets tuple of RGB values
color_result_rgb = ' '.join(format(x, "1.0f") for x in rgb_tuple) #tuple into a string
现在,假设我选择值为 (255, 0, 128) 的粉红色
>>> rgb_tuple
返回:
(255.99609375, 0.0, 128.5)
和
>>> color_result_rgb
返回:
'256 0 128'
如何解决这个问题,以使返回的值正确?
【问题讨论】:
-
尝试在
format()调用中将值转换为整数,而不是浮点数。 -
这很奇怪;所有文档似乎都同意返回值应该至少在
0..255范围内。他们都没有特别提到一个实数(与更常规的整数相反)可能被返回。你在什么操作系统上运行?会不会有一些色彩管理干扰? -
这看起来像一个错误 - 当我在我的 linux 机器上运行它时,我确实得到了浮点数而不是整数。简单的解决方法是将数字转换为 int 而不是 float。
-
@martineau:这是一个已知问题,将值
255转换为带有format()的浮点数会产生 255.99-and-a-bit? -
@usr2564301:这不是我所知道的——
255.99609375是有点奇怪——但这里真正的问题是由于将结果从askcolor()转换为浮点数,不是整数,格式。