проблема встраивания графа matplotlib в tkinter - PullRequest
0 голосов
/ 04 января 2019

Я пытаюсь встроить граф анимации в мой графический интерфейс, однако всякий раз, когда я пробую то, что я видел в соответствии с учебниками по использованию canvas, я получаю пустой экран tkinter. Нет ошибок, ничего.

Тем не менее, когда я использую plt.show, он работает нормально, но не ограничивается GUI. В чем проблема.

Это, вероятно, быстрое решение, но это то, что у меня есть.

Любая помощь будет оценена!

class popupWindowOscil(tk.Frame):

  def __init__(self,master,ser):

    OscilTop= self.OscilTop= Toplevel(master)
    tk.Frame.__init__(self)
    self.ser = ser   
    self.fig = plt.figure()
    self.ax = self.fig.add_subplot(1, 1, 1)

    self.xs = []
    self.ys = []
    self.xval =0
    self.OscilLoop()


  def OscilLoop(self):

    ani = animation.FuncAnimation(self.fig, self.Oscilliscope, fargs=(self.xs, self.ys))
    #self.canvas = FigureCanvasTkAgg(self.fig, self)
    #self.canvas.draw()
    #self.canvas.get_tk_widget().pack(side=tk.BOTTOM, fill=tk.BOTH, expand=True)
    plt.show()
    return

# The function that creates the values for the plot.
  def Oscilliscope(self,i,xs,ys):

    tryagain =1
    while tryagain == 1:
        try:
            reading = self.ser.readline().decode()
            tryagain = 0
        except UnicodeDecodeError:
            pass
    Incominglist = str(reading).split(",")
    try:
        numbers = [float(x) for x in Incominglist]
    except ValueError:
        print ('Failure during string decode, Restart and Try again')
        return
    # Add x and y to lists
    self.ys.extend(numbers)

    for val in range(len(Incominglist)):
        if  self.xval == 0 and val ==0:
            self.xs.append(self.xval)  # or any arbitrary update to your figure's data
        else:
            self.xval += 0.005
            self.xs.append(self.xval)

    # Draw x and y lists
    self.ax.clear()
    self.ax.plot(self.xs, self.ys)

    # Format plot
    self.ax.yaxis.set_ticks(np.arange(0,5,0.25))
    plt.subplots_adjust(bottom=0.30)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...