Вы можете использовать модуль threading
, чтобы запланировать выполнение функции:
from threading import Thread
def wrapper():
time.sleep(5)
image = np.array(np.random.random((1024,1024))*100,dtype=int)
ax.imshow(image)
canvas.draw()
_t = Thread(target=wrapper)
_t.start()
Это выполнит функцию wrapper
в новом потоке, поэтому исходная программа может продолжаться.
Вот полный пример:
#!/usr/bin/env python
import time
import tkinter as tk
from threading import Thread
import matplotlib
matplotlib.use("TkAgg")
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure
import numpy as np
root = tk.Tk()
f = Figure(figsize=(6,6))
ax = f.add_subplot(111)
# First image
image = np.array(np.random.random((1024,1024))*100, dtype=int)
ax.imshow(image)
canvas = FigureCanvasTkAgg(f, root)
canvas.draw()
canvas.get_tk_widget().pack(side=tk.BOTTOM, fill=tk.BOTH, expand=True)
def wrapper():
time.sleep(5)
# Second image appears after 5 seconds
image = np.array(np.random.random((1024,1024))*100,dtype=int)
ax.imshow(image)
canvas.draw()
_t = Thread(target=wrapper)
_t.start()
root.mainloop()