Вставить участок МНП в Ткинтер - PullRequest
0 голосов
/ 15 апреля 2020

Мне нужно использовать функцию plot из библиотеки MNE, которая возвращает значение matplotlib моего графика.

Поскольку я создаю приложение под Tkinter, я хочу, чтобы фигура появилась в окне моего приложения.

Я использовал этот код. Сюжет появляется как в окне приложения, так и на другой фигуре matplotlib. Проблема состоит в том, что в приложении появляется stati c, это просто экземпляр фигуры matplotlib, и мне нужен интерактивный.


import tkinter as tk

from tkinter import ttk
from tkinter.filedialog import askopenfile

import matplotlib
matplotlib.use("TkAgg")

from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk
from matplotlib.figure import Figure
from matplotlib import pyplot as plt

import mne

root = tk.Tk()

frame2 = tk.Frame(root)
frame2.pack(side= tk.LEFT,ipadx=500,ipady=350)



#Data path
file = 'C:\\Users\\...\chb01_01.edf'

#EDF to MNE Raw
data_raw = mne.io.read_raw_edf(file, preload=True)


but1 = tk.Button(frame2, text="plot",
                    command=lambda: time_plot(data_raw))
but1.pack()


def time_plot(data_raw):
    f = data_raw.plot(duration=5, n_channels=23)
    canvas = FigureCanvasTkAgg(f, frame2)

    toolbarFrame = tk.Frame(frame2)
    toolbarFrame.pack(side=tk.TOP, fill=tk.BOTH, expand=True)
    toolbar = NavigationToolbar2Tk(canvas, toolbarFrame)

    canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=True)


root.mainloop()

Есть идеи, как решить проблему?

...