Tkinter: Difference between revisions

From David's Wiki
No edit summary
No edit summary
Line 2: Line 2:


==Images==
==Images==
To display an image
To display an image, create a <code>tk.Canvas</code> and then use <code>canvsa.create_image</code>.
 
{{ hidden | Example |
{{ hidden | Example |
<syntaxhighlight lang="python">
<syntaxhighlight lang="python">
Line 31: Line 32:
;Notes
;Notes
* Make sure the <code>ImageIk.PhotoImage</code> does not get garbage collected.
* Make sure the <code>ImageIk.PhotoImage</code> does not get garbage collected.
==Animation Loop==
For interactive applications, you may want an animation loop called every few milliseconds.<br>
To accomplish this, use <code>.after</code>.
{{ hidden | Example |
{{ hidden | Example |
<syntaxhighlight lang="python">
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()
</syntaxhighlight>
}}

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.

{{ hidden | Example |

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