Python 绘制的渐变颜色始终是一致的
我试图用非常简单的方法(画直线序列)编写我自己的简单函数来绘制渐变(仅灰色),但实际上代表渐变的矩形的颜色始终是统一的颜色(我认为它是循环中最新的颜色)。你能解释一下为什么吗?代码如下:Python 绘制的渐变颜色始终是一致的,python,tkinter,Python,Tkinter,我试图用非常简单的方法(画直线序列)编写我自己的简单函数来绘制渐变(仅灰色),但实际上代表渐变的矩形的颜色始终是统一的颜色(我认为它是循环中最新的颜色)。你能解释一下为什么吗?代码如下: import Tkinter class testGUI: def __init__( self, root ): C = Tkinter.Canvas( root, bg = "blue", height = 250, width = 300 ) self.drawG
import Tkinter
class testGUI:
def __init__( self, root ):
C = Tkinter.Canvas( root, bg = "blue", height = 250, width = 300 )
self.drawGradient( C, 10, 10, 100, 50 )
C.pack()
def drawGradient( self, canvas, x, y, w, h ):
for offset in range( 0, w ):
gradColor = '#%02x%02x%02x' % ( x * 10, x * 10, x * 10 )
canvas.create_line( x + offset, y, x + offset, y + h, fill = gradColor )
root = Tkinter.Tk()
app = testGUI( root )
root.mainloop()
颜色始终相同,因为您使用的颜色不依赖于循环的迭代:
for offset in ...
gradColor = '#%02x%02x%02x' % ( x * 10, x * 10, x * 10 )
要使其更改,gradColor
的值必须取决于offset
的值,例如:
def drawGradient(self, canvas, x, y, w, h):
factor = 255./w
for offset in range(0, w):
gradColor = '#%02x%02x%02x' % (offset*factor, offset*factor, offset*factor)
canvas.create_line(x + offset, y, x + offset, y + h, fill=gradColor)
天啊。。。我只是将循环命名为“for x in…”,但希望名称为“offset”,而忘记了x。谢谢