Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

tkinter 프레임에 matplotlib 애니메이션 포함

<시간/>

matplotlib 애니메이션을 tkinter 프레임에 포함하려면 다음 단계를 수행할 수 있습니다.

단계

  • Figure 크기를 설정하고 서브플롯 사이와 주변의 패딩을 조정합니다.

  • Tk의 최상위 위젯 만들기 주로 응용 프로그램의 기본 창을 나타냅니다.

  • 이 위젯의 ​​제목을 설정합니다.

  • 현재 Figure에 좌표축을 추가하여 현재 좌표축으로 만듭니다.

  • 새 그림을 만들거나 기존 그림을 활성화하세요.

  • '도끼' 추가 하위 플롯 배열의 일부로 그림에.

  • linewidth=2로 더미 선 플롯을 만듭니다. .

  • 그림이 렌더링되는 캔버스를 만듭니다.

  • 조작할 피규어 캔버스를 생성합니다.

  • 키 누르기 만들기 tkinter 겨울 종료 이벤트입니다.

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

출력

다음 출력을 생성합니다 -

tkinter 프레임에 matplotlib 애니메이션 포함