如何使用tkinter在python中“闪现”一个正方形?

2024-04-19 06:13:10 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我编写了一个叫做西蒙说的游戏,这是一个经典的颜色记忆游戏。算法显然还没有完成,但我只是不知道如何才能使正方形闪烁。我只是用蓝色方块测试一下。在

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个。我要做的是让方块闪烁。我可以稍后处理随机模式。我只需要帮忙制作方形闪光灯。在


Tags: import游戏颜色creategreenblueredwindow
1条回答
网友
1楼 · 发布于 2024-04-19 06:13:10

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

编辑以回答新请求:

只闪烁一次。
使用lightbluei/o黄色。
w.find_withtag(tag)返回画布项引用索引,该索引位于画布上,以标识要对哪个项执行操作。
dummy是填充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()

相关问题 更多 >