2

非常に単純な方法(一連の線を描画する)を使用してグラデーション(灰色のみ)を描画する独自の単純な関数を作成しようとしましたが、実際にはグラデーションを表す長方形の色は常に均一な色です(私はそれがループからの最新の色)。理由を教えてください。コードは次のとおりです。

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()
4

1 に答える 1

3

使用している色はループの繰り返しに依存しないため、色は常に同じです。

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)
于 2013-05-27T20:43:40.507 に答える