Matplotlib एनिमेशन को Tkinter GUI एप्लिकेशन में एम्बेड करने के लिए FigureCanvasTkAgg और FuncAnimation का उपयोग करें।
चरण
- फिगर आकार सेट करें और पैडिंग समायोजित करें
- Tk का टॉपलेवल विजेट बनाएं (मुख्य विंडो)
- विंडो शीर्षक सेट करें
- वर्तमान फिगर में एक्सिस जोड़ें
- नया फिगर बनाएं या मौजूदा सक्रिय करें
- सबप्लॉट व्यवस्था के भाग के रूप में फिगर में 'ax' जोड़ें
linewidth=2के साथ डमी लाइन प्लॉट बनाएं- कैनवास बनाएं जिस पर फिगर रेंडर होगा
- फिगर कैनवास बनाएं
key_pressइवेंट बनाएं Tkinter विंडो छोड़ने के लिएanimateफंक्शन को बार-बार कॉल करके एनिमेशन बनाएंtkinter.mainloop()से GUI चलाएं
उदाहरण
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("Matplotlib एनिमेशन Tkinter में")
# फिगर और एक्सिस
fig = plt.Figure(dpi=100)
ax = fig.add_subplot(xlim=(0, 2), ylim=(-1, 1))
line, = ax.plot([], [], lw=2)
# Tkinter कैनवास
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()
आउटपुट
Tkinter विंडो में एनिमेटेड साइन वेव: लाइन बाएं से दाएं चलती हुई दिखाई देती है। नेविगेशन टूलबार (ज़ूम, पैन, सेव) और क्विट बटन शामिल हैं।
मुख्य घटक
| घटक | भूमिका |
|---|---|
FigureCanvasTkAgg | Matplotlib फिगर को Tkinter विजेट में एम्बेड करता है |
NavigationToolbar2Tk | इंटरैक्टिव टूलबार (ज़ूम, पैन, सेव) जोड़ता है |
FuncAnimation | फंक्शन को बार-बार कॉल करके एनिमेशन बनाता है |
blit=True | केवल बदले हुए भाग रीड्रॉ करके प्रदर्शन सुधारता है |
नोट
plt.axes() और plt.Figure() का मिश्रण भ्रमित कर सकता है। बेहतर है fig, ax = plt.subplots() या पूर्ण ऑब्जेक्ट-ओरिएंटेड दृष्टिकोण उपयोग करें।