Tkinter: Difference between revisions

From David's Wiki
No edit summary
Line 37: Line 37:
To accomplish this, use <code>.after</code>.
To accomplish this, use <code>.after</code>.


{{ hidden | Example |
{{ hidden | Example |
{{ hidden | Example |
<syntaxhighlight lang="python">
<syntaxhighlight lang="python">

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 ImageIk.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()