Is there any way to stop the lag in this Gif opener?
Your problem may be similar to this one:
https://stackoverflow.com/questions/50904093/gif-animation-in-tkinter-with-pill-flickering-on-every-other-frame
I tried your code on gif which has a 2nd disposal method.
Works, but loops over frames too quickly. GIFs with the 1st disposal method fail.
Also pay attention to the frame delay/frame rate. Different GIFs can have different values.
You can use third party libraries like Pillow to get file information.

from PIL import Image

f = Image.open(&quot;tenor.gif&quot;)
print(f.info) # duration in ms
print(f.disposal_method)
print(f.n_frames) # number of frames


Output example:
{'version': b'GIF89a', 'background': 140, 'transparency': 140, 'duration': 160, 'extension': (b'NETSCAPE2.0', 795), 'loop': 0}
2
12

You can use some custom label classes.
https://stackoverflow.com/a/43770948/8349697
Consider using the PyQt5 library. I tried some test gifs with QtWidgets, and it works much better than tkinter. PyQt can display animated gifs using QMovie.