今天我们用canvas画布来绘制红绿灯,并且实现红绿灯的变换。
首先要做的是绘制红绿灯,并设置好初始颜色,除了初始亮起的灯,将其他两个灯设置为灰色。然后利用canvas.itemconfigure()函数来改变组件的颜色属性,这个函数的作用和Lable.config()函数是类似的。这个函数通过tags属性来指定要更改的组件,这里我们把三个圆形的tags设为对应的颜色名称。
代码很简单,直接来看看吧:
import tkinter as tk
i=0
def flash(event):
global i
flashing_colors = [ 'yellow','green','red']
col=flashing_colors[i]
#将其他两个灯置黑
for key in flashing_colors:
if key!=col:
w.itemconfigure(key, fill='gray')
#改变画布属性
w.itemconfigure(col, fill=col)
i+=1
if i==3:
i=0
window.after(150,flash,i) #递归刷新
if __name__ == '__main__':
window = tk.Tk()
window.title('红绿灯')
w = tk.Canvas(window, width=300, height=500)
w.pack()
#红绿灯的边框
w.c