Tkinter: Difference between revisions
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()