Tkinter: Difference between revisions
Line 31: | Line 31: | ||
}} | }} | ||
;Notes | ;Notes | ||
* Make sure the <code> | * Make sure the <code>ImageTk.PhotoImage</code> does not get garbage collected. | ||
==Animation Loop== | ==Animation Loop== |
Revision as of 16:38, 1 February 2021
Tkinter is a Python API for the Tk GUI. It is built into the Python standard library and is cross platform.
Images
To display an image, create a tk.Canvas
and then use canvsa.create_image
.
Example
import tkinter as tk
from PIL import Image, ImageTk
import requests
image_url = 'https://via.placeholder.com/256/0000FF/'
image = Image.open(requests.get(image_url, stream=True).raw)
window = tk.Tk()
main_frame = tk.Frame(window)
main_frame.pack()
canvas = tk.Canvas(main_frame,
width=image.size[0],
height=image.size[1])
canvas.pack()
photo_img = ImageTk.PhotoImage(image=image)
canvas_image = canvas.create_image(0, 0, image=photo_img, anchor=tk.NW)
window.mainloop()
# To update the image later on..
image_url2 = 'https://via.placeholder.com/256/FF00FF/'
image2 = Image.open(requests.get(image_url, stream=True).raw)
photo_img = ImageTk.PhotoImage(image=image2)
canvas.itemconfigure(canvas_image, image=photo_img)
- Notes
- Make sure the
ImageTk.PhotoImage
does not get garbage collected.
Animation Loop
For interactive applications, you may want an animation loop called every few milliseconds.
To accomplish this, use .after
.
Example
import tkinter as tk
import time
last_time = time.time()
def animation_loop():
global last_time
now = time.time()
delta_time = now - last_time
print("Time elapsed", delta_time)
last_time = now
window.after(1, animation_loop)
window = tk.Tk()
animation_loop()
window.mainloop()