Создание встроенных графиков вместо обновления текущего менеджера графика и геометрии сетки - PullRequest
0 голосов
/ 15 марта 2020

У меня проблема с обновлением embedded plot, так как я хочу обновить sh область графика, когда пользователь хочет увидеть другие варианты. Я уже искал здесь. Я перепробовал много вещей, но не смог найти дорогу. когда я использую pack geometry manager, вместо встроенной предыдущей появляются новые встроенные графики. С grid manager он работает, но на этот раз размер графика не охватывает весь canvas, а размер frame изменяется. Итак, я нашел способ обновить. Возможно, это не очень хороший способ сделать это, но я новичок в кодировании. так что мне интересно, как я могу сделать с менеджером геометрии сетки с этой частью pack(fill = BOTH, expand = True) я пробовал эту опцию `grid (row = 0, column = 0, sticky =" nsew ") '?

enter image description here Некоторые части моего кода: Моим решением было уничтожить текущий кадр и создать новый для обновления графика.

frm_plot=Frame(root,bd=5,relief=SUNKEN,bg="white",width=450,height=350)
frm_plot.grid(row=0,column=0,columnspan=3,sticky="N"+"W"+"S"+"E")
frm_plot.grid_propagate(0)

def plotarea2():
    #new frame
    frm_plot = Frame(root, bd=5, relief=SUNKEN, bg="white", width=450, height=350)
    frm_plot.grid(row=0, column=0, columnspan=3, sticky="N" + "W" + "S" + "E")
    frm_plot.grid_propagate(0)

    if comboplottype.get() == 'Line':
        add_btn = Button(frm_btn, text="add", command=curves, state=DISABLED)
        add_btn.grid(row=4, column=0, sticky="nsew")
        fig = Figure(figsize=(5, 4))
        ax1 = fig.add_subplot(111)

        for a in range(len(selected_colors)):
            lines = ax1.plot(list(df_la[lst[a]]),color=selected_colors[a],linewidth=Linewidth_size_scale.get())

        canvas = FigureCanvasTkAgg(fig, master=frm_plot)  # A tk.DrawingArea.
        canvas.draw()
        plt.show(block=TRUE)
        toolbar = NavigationToolbar2Tk(canvas, frm_plot)
        toolbar.update()
        def on_key_press(event):
            print("you pressed {}".format(event.key))
            key_press_handler(event, canvas, toolbar)

        canvas.mpl_connect("key_press_event", on_key_press)
        canvas.get_tk_widget().pack(side="top", fill="both", expand=True)

        plt_btn_canvas = Button(frm_btn, text="Plot", command=plotarea2,state=DISABLED)
        plt_btn_canvas.grid(row=5, column=0, sticky="nsew")
        color_add_btn = Button(frm_colors, text="Add Color for lines", command=colors_to_curves,state=DISABLED)
        color_add_btn.grid(row=4, column=0, columnspan=2, sticky="nsew")

        def reset():
            plt_btn_canvas = Button(frm_btn, text="Plot", command=plotarea2)
            plt_btn_canvas.grid(row=5, column=0, sticky="nsew")
            color_add_btn = Button(frm_colors, text="Add Color for lines", command=colors_to_curves)
            color_add_btn.grid(row=4, column=0, columnspan=2, sticky="nsew")
            add_btn = Button(frm_btn, text="add", command=curves)
            add_btn.grid(row=4, column=0, sticky="nsew")
            lst.clear()
            selected_colors.clear()
            frm_plot.destroy()
...