【问题标题】:Embed MNE plot in Tkinter在 Tkinter 中嵌入 MNE 图
【发布时间】:2021-05-14 03:03:08
【问题描述】:

我必须使用 MNE 库中的 plot 函数,该函数返回我的绘图的 matplotlib 图。

当我在 Tkinter 下构建应用程序时,我希望该图形出现在我的应用程序的窗口中。

我使用了这个代码。该图同时出现在应用程序的窗口和另一个 matplotlib 图中。问题是应用程序中出现的内容是静态的,它只是 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()

关于如何解决问题的任何想法?

【问题讨论】:

标签: python tkinter mne-python


【解决方案1】:

我在处理类似情况时遇到了您的问题。这是我在 tkinter 小部件的画布上绘制原始 mne 数据的方法。图上方是一个退出按钮。

import mne as mn
import tkinter as tk
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib import pyplot as plt

root = tk.Tk()
root.wm_title("Embedding Raw Plot")

def _quit():
    root.quit()
    root.destroy()

button = tk.Button(master=root, text="Quit", command=_quit)
button.pack(side=tk.TOP)

raw = mn.io.read_raw_edf('sample.edf', preload=True)
fig=raw.plot(show=False,duration=30)


canvas = FigureCanvasTkAgg(fig, master=root)
canvas.draw()
canvas.get_tk_widget().pack(side=tk.TOP)


tk.mainloop()

【讨论】:

    猜你喜欢
    • 2021-12-04
    • 2016-04-26
    • 1970-01-01
    • 2021-08-11
    • 2013-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-27
    相关资源
    最近更新 更多