If you use 'event generate' to send mouse button events to a widget, all but the first come out as doubleclicks, no matter what the time interval between them. You only get another single click after a real click. e.g.,
% pack [canvas .c]
% bind .c <Button-1> {puts aah}
% bind .c <Double-1> {puts ooh}
% event generate .c <Button-1>
aah
% # now wait a bit
% event generate .c <Button-1>
ooh
% # now wait a bit
% event generate .c <Button-1>
ooh
% # now actually click in .c
% aah
# now doubleckick in .c
% aah
ooh
event generate .c <Button-1>
aah