如何使用tkinter在flash中“闪烁”一个方块?

时间:2018-06-14 00:59:48

标签: python python-3.x tkinter tkinter-canvas

所以我正在编写这款名为simon的游戏,这就是这款经典的彩色记忆游戏。该算法显然还没有完成,但我只是不知道如何让广场闪现。我只是用蓝色方块测试它。

from tkinter import *
import random
import time

def click():
        lightblue_rectangle = w.create_rectangle(483, 480, 683, 680, fill="blue")
        window.after(500, click)
        blue_rectangle = w.create_rectangle(483, 480, 683, 680, fill="darkblue")



window = Tk()

w = Canvas(window, width=1366, height=766)
w.configure(background = "black")
w.pack()


blue_rectangle = w.create_rectangle(483, 480, 683, 680, fill="darkblue")
red_rectangle = w.create_rectangle(683, 480, 883, 680, fill="red")
yellow_rectangle = w.create_rectangle(483, 280, 683, 480, fill="yellow")
green_rectangle = w.create_rectangle(683, 280, 883, 480, fill="green")

w.tag_bind(blue_rectangle, "<ButtonPress-1>", click)

我得到的错误是:click()接受0个位置参数,但是给出了1。我想做的是让方形闪光。我可以稍后处理随机模式。我只需要帮助制作方形闪光灯。

1 个答案:

答案 0 :(得分:2)

点击后,以下内容会闪烁右下角:

编辑回答新请求:

只闪一次。
使用lightblue i / o黄色 w.find_withtag(tag)返回画布项目引用索引,该索引使画布能够识别要对其执行的项目 dummy是占位符dummy_variable,可填写event - 它不会执行任何操作。

import tkinter as tk


def flash(event, idx=0):
    print(idx)
    flashing_colors = ['lightblue', 'darkblue']
    try:
        w.itemconfigure(w.find_withtag('blue_rectangle'), fill=flashing_colors[idx])
        window.after(100, flash, 'dummy', idx + 1)
    except IndexError:
        pass


if __name__ == '__main__':

    window = tk.Tk()

    w = tk.Canvas(window, width=1366, height=766)
    w.configure(background="black")
    w.pack()

    blue_rectangle = w.create_rectangle(483, 480, 683, 680, fill="darkblue", tags=('blue_rectangle',))
    red_rectangle = w.create_rectangle(683, 480, 883, 680, fill="red")
    yellow_rectangle = w.create_rectangle(483, 280, 683, 480, fill="yellow")
    green_rectangle = w.create_rectangle(683, 280, 883, 480, fill="green")

    w.bind("<ButtonPress-1>", flash)

    window.mainloop()