como fazer o evento tkinter <Enter> funcionar quando <button-1> é pressionado?
Quero preencher retângulos como na pintura. Quando o botão do mouse é pressionado, quero que todos os retângulos inseridos sejam preenchidos e, caso contrário, não quero que nenhum evento ocorra.
Aqui está o meu código:
from tkinter import Canvas
import tkinter
_width = 50
_height = 50
_size = 8
root = tkinter.Tk()
root.title("draw me a lovely matrix")
canv = Canvas(root, width=_width * _size, height=_height * _size)
class Wrapper:
btn1d = False
def set_btn1d(value):
print(value)
Wrapper.btn1d = value
def toggle_color(rect):
print('called')
if Wrapper.btn1d:
color = canv.itemcget(rect, 'fill')
canv.itemconfig(rect, fill=("#aaa" if color == '#fff' else '#fff'))
rects = []
canv.bind('<ButtonPress-1>', lambda e, value=True: set_btn1d(value))
canv.bind('<ButtonRelease-1>', lambda e, value=False: set_btn1d(value))
for i in range(_size):
for j in range(_size):
rect = canv.create_rectangle(_width * j, _height * i, _width * (j + 1), _height * (i + 1), fill="#fff", width=0)
rects.append(rect)
canv.tag_bind(rect, '<Enter>', lambda e, rect=rect: toggle_color(rect))
canv.pack()
root.mainloop()
O problema é que, quando pressiono o botão do mouse, apenas a célula na qual o mouse foi pressionado detecta a entrada do ponteiro do mouse (também aquela na qual o mouse será liberado no final)
Qualquer conselho geral benéfico sobre o meu código seria muito apreciado.