Вставить pyplot в окно TKinter - PullRequest
1 голос
/ 12 апреля 2020

Я создаю GUI под tkinter, и мне нужно отобразить сигналы ЭЭГ на странице моего приложения. После импорта всего необходимого я создал холст следующим образом:

class StartPage(tk.Frame):

 def __init__(self, parent, controller):
    tk.Frame.__init__(self,parent)
    label = tk.Label(self, text=("Time Representation"), font=LARGE_FONT)
    label.pack(pady=10,padx=10)

    f = plt.figure()
    a = f.add_subplot(111)

    canvas = FigureCanvasTkAgg(f, self)
    canvas.get_tk_widget().pack(side=tk.BOTTOM, fill=tk.BOTH, expand=True)

    toolbar = NavigationToolbar2Tk(canvas, self)
    toolbar.update()
    canvas._tkcanvas.pack(side=tk.TOP, fill=tk.BOTH, expand=True)

    button1 = ttk.Button(self, text="plot",
                        command=lambda: time_plot())
    button1.pack()

    def time_plot()

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

Вот часть графика моей функции:

        def time_plot():
        ....
        a.set_xticks(np.arange(t_window))
        lines = LineCollection(segs, offsets=offsets, transOffset=None)
        a.add_collection(lines)

        a.set_yticks(ticklocs)
        a.set_yticklabels(ch_names)
        a.set_xlabel('Time (s)')

        plt.tight_layout()
        plt.show()

        canvas.draw()

Поскольку я новичок и в python, и в tkinter, я не знаю, где проблема в том, чтобы заставить сюжет появиться в приложении. Я думаю, что это вызвано plt.show (), но я не знаю, как это исправить.

1 Ответ

1 голос
/ 12 апреля 2020

Я мог бы наконец решить это самостоятельно. Я прокомментировал эти две строки, и мой сюжет появляется внутри холста:

#plt.tight_layout()
#plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...