Matplotlib অ্যানিমেশন Tkinter ফ্রেমে এম্বেড করতে আমরা নিচের ধাপগুলো অনুসরণ করতে পারি।
ধাপসমূহ
ফিগার আকার সেট করুন এবং সাবপ্লটগুলির মধ্যবর্তী ও চারপাশের প্যাডিং সমন্বয় করুন।
Tk-এর একটি Toplevel উইজেট তৈরি করুন যা একটি অ্যাপ্লিকেশনের মূল উইন্ডোকে প্রতিনিধিত্ব করে।
এই উইজেটের শিরোনাম সেট করুন।
বর্তমান ফিগারে একটি অক্ষ যোগ করুন এবং এটি বর্তমান অক্ষ করে দিন।
একটি নতুন ফিগার তৈরি করুন বা বিদ্যমান ফিগার সক্রিয় করুন।
ফিগারে একটি 'ax' সাবপ্লট ব্যবস্থার অংশ হিসেবে যোগ করুন।
linewidth=2 দিয়ে একটি ডামি লাইন প্লট তৈরি করুন।
ফিগার রেন্ডার হতে ক্যানভাস তৈরি করুন।
অপারেশন করার জন্য ফিগার ক্যানভাস তৈরি করুন।
Tkinter উইন্ডো বন্ধ করার জন্য একটি keypress ইভেন্ট তৈরি করুন।
*animate* ফাংশন বারবার কল করে একটি অ্যানিমেশন তৈরি করুন।
ফিগার প্রদর্শন করতে Show() মেথড ব্যবহার করুন।
উদাহরণ
import tkinter
from matplotlib.backends.backend_tkagg import (
FigureCanvasTkAgg, NavigationToolbar2Tk)
from matplotlib.backend_bases import key_press_handler
from matplotlib import pyplot as plt, animation
import numpy as np
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
root = tkinter.Tk()
root.wm_title("Embedding in Tk")
plt.axes(xlim=(0, 2), ylim=(-2, 2))
fig = plt.Figure(dpi=100)
ax = fig.add_subplot(xlim=(0, 2), ylim=(-1, 1))
line, = ax.plot([], [], lw=2)
canvas = FigureCanvasTkAgg(fig, master=root)
canvas.draw()
toolbar = NavigationToolbar2Tk(canvas, root, pack_toolbar=False)
toolbar.update()
canvas.mpl_connect(
"key_press_event", lambda event: print(f"you pressed {event.key}"))
canvas.mpl_connect("key_press_event", key_press_handler)
button = tkinter.Button(master=root, text="Quit", command=root.quit)
button.pack(side=tkinter.BOTTOM)
toolbar.pack(side=tkinter.BOTTOM, fill=tkinter.X)
canvas.get_tk_widget().pack(side=tkinter.TOP, fill=tkinter.BOTH, expand=1)
def init():
line.set_data([], [])
return line,
def animate(i):
x = np.linspace(0, 2, 1000)
y = np.sin(2 * np.pi * (x - 0.01 * i))
line.set_data(x, y)
return line,
anim = animation.FuncAnimation(fig, animate, init_func=init, frames=200, interval=20, blit=True)
tkinter.mainloop()
আউটপুট
এটি নিচের আউটপুট তৈরি করবে −
