“我该怎么做?”;闪光“;python中使用tkinter的正方形?

“我该怎么做?”;闪光“;python中使用tkinter的正方形?,python,python-3.x,tkinter,tkinter-canvas,Python,Python 3.x,Tkinter,Tkinter Canvas,所以我正在编写一个名为simon says的游戏,这是一个经典的颜色记忆游戏。算法显然还没有完成,但我只是不知道如何才能让方块闪烁。我只是用蓝色的方块来测试一下 from tkinter import * import random import time def click(): lightblue_rectangle = w.create_rectangle(483, 480, 683, 680, fill="blue") window.after(500,

所以我正在编写一个名为simon says的游戏,这是一个经典的颜色记忆游戏。算法显然还没有完成,但我只是不知道如何才能让方块闪烁。我只是用蓝色的方块来测试一下

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)
从tkinter导入*
随机输入
导入时间
def click():
lightblue\u rectangle=w.create\u rectangle(483480683680,fill=“blue”)
窗口。之后(500,单击)
蓝色矩形=w。创建矩形(483480683680,fill=“暗蓝色”)
window=Tk()
w=画布(窗口,宽度=1366,高度=766)
w、 配置(background=“black”)
w、 包()
蓝色矩形=w。创建矩形(483480683680,fill=“暗蓝色”)
红色矩形=w。创建矩形(683480883680,fill=“红色”)
黄色矩形=w。创建矩形(483280683480,fill=“黄色”)
绿色矩形=w。创建矩形(683280883480,fill=“绿色”)
w、 标记绑定(蓝色矩形“”,单击)

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

单击后,以下内容将闪烁右下角的方块:

编辑以答复新请求: 仅闪烁一次。
使用浅蓝色i/o黄色。
w.find_with tag(tag)
返回画布上的画布项引用索引,以标识要对哪个项进行操作。
dummy
是一个占位符dummy\u变量,用于填充
事件
——它不做其他事情

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()
将tkinter作为tk导入
def闪存(事件,idx=0):
打印(idx)
闪烁的颜色=['浅蓝色','深蓝色']
尝试:
w、 itemconfigure(w.find_with tag('blue_rectangle'),fill=flash_colors[idx])
窗口后(100,闪烁,“虚拟”,idx+1)
除索引器外:
通过
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
window=tk.tk()
w=tk.Canvas(窗口,宽度=1366,高度=766)
w、 配置(background=“black”)
w、 包()
蓝色矩形=w。创建矩形(483480683680,fill=“暗蓝色”,标记=('蓝色矩形',)
红色矩形=w。创建矩形(683480883680,fill=“红色”)
黄色矩形=w。创建矩形(483280683480,fill=“黄色”)
绿色矩形=w。创建矩形(683280883480,fill=“绿色”)
w、 绑定(“,flash)
window.mainloop()

单击后,以下内容将闪烁右下角的方框:

编辑以答复新请求: 仅闪烁一次。
使用浅蓝色i/o黄色。
w.find_with tag(tag)
返回画布上的画布项引用索引,以标识要对哪个项进行操作。
dummy
是一个占位符dummy\u变量,用于填充
事件
——它不做其他事情

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()
将tkinter作为tk导入
def闪存(事件,idx=0):
打印(idx)
闪烁的颜色=['浅蓝色','深蓝色']
尝试:
w、 itemconfigure(w.find_with tag('blue_rectangle'),fill=flash_colors[idx])
窗口后(100,闪烁,“虚拟”,idx+1)
除索引器外:
通过
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
window=tk.tk()
w=tk.Canvas(窗口,宽度=1366,高度=766)
w、 配置(background=“black”)
w、 包()
蓝色矩形=w。创建矩形(483480683680,fill=“暗蓝色”,标记=('蓝色矩形',)
红色矩形=w。创建矩形(683480883680,fill=“红色”)
黄色矩形=w。创建矩形(483280683480,fill=“黄色”)
绿色矩形=w。创建矩形(683280883480,fill=“绿色”)
w、 绑定(“,flash)
window.mainloop()

嘿,谢谢你的回答。我有几个问题。我只希望矩形闪烁一次,我只想闪烁一个较浅的颜色,而不是黄色。因此,如果单击蓝色,它将闪烁淡蓝色。我该怎么做呢?还有,find_with Tag和“dummy”有什么作用?我编辑了答案以解决您的新问题和要求。非常感谢您的回答。现在,如果你不介意的话,我还有一个问题。我正在创建计算机随机生成的图案。图案将以1:1的方式闪烁颜色。每一轮都会增加1种随机颜色。如何让程序闪烁颜色?不需要单击。您需要将闪烁触发器绑定到程序生成的事件/输出。你也许应该盯着它看一点,如果你想不出来,那就问一个新问题。同时,如果我的回答对你有帮助,你应该接受。嘿,谢谢你的回答。我有几个问题。我只希望矩形闪烁一次,我只想闪烁一个较浅的颜色,而不是黄色。因此,如果单击蓝色,它将闪烁淡蓝色。我该怎么做呢?还有,find_with Tag和“dummy”有什么作用?我编辑了答案以解决您的新问题和要求。非常感谢您的回答。现在,如果你不介意的话,我还有一个问题。我正在创建计算机随机生成的图案。图案将以1:1的方式闪烁颜色。每一轮都会增加1种随机颜色。如何让程序闪烁颜色?不需要单击。您需要将闪烁触发器绑定到程序生成的事件/输出。你也许应该盯着它看一点,如果你想不出来,那就问一个新问题。同时,如果我的回答对你有帮助,你应该接受它。