Не обновлять график, когда установлен флажок, но когда я касаюсь ползунка, он обновляет график. - PullRequest
0 голосов
/ 17 марта 2020

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

enter image description here

enter image description here

def plotarea2():
    varr=dict()
    lst_CHKBX = ["Show Grid", "Legend", "X tick Labels", "Y tick Labels", "Share X", "Share Y", "Log x",
                 "Log y"]
    command_chk = ["s", "l", "x", "y", "sx", "sy", "lx", "ly"]

    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)):
            def lgnd():
                for i in lst_CHKBX:
                    if varr[i].get()==1:
                        ax1.legend(lst[a])

                    else:
                        return

            def shwgrd():
                for i in lst_CHKBX:
                    if varr[i].get() == 1:
                        ax1.grid(TRUE)
                    else:
                        return


            def xtl():
                for i in lst_CHKBX:
                    if varr[i].get() == 1:
                        ax1.set_xlabel(lst[a])
                    else:
                        return

            def ytl():
                for i in lst_CHKBX:
                    if varr[i].get() == 1:
                        ax1.set_ylabel(lst[a])
                    else:
                        return

            def sx():
                for i in lst_CHKBX:
                    if varr[i].get() == 1:
                        print("active")
                    else:
                        return

            def sy():
                for i in lst_CHKBX:
                    if varr[i].get() == 1:
                        print("active")
                    else:
                        return

            def lx():
                for i in lst_CHKBX:
                    if varr[i].get() == 1:
                        print("active")
                    else:
                        return

            def ly():
                for i in lst_CHKBX:
                    if varr[i].get() == 1:
                        print("active")
                    else:
                        return

            lines = ax1.plot(list(df_la[lst[a]]), color=selected_colors[a], linewidth=Linewidth_size_scale.get())

        def update_chkbox():
            global count
            count = -1
            for m in lst_CHKBX:
                count += 1
                varr[m] = IntVar()
                chk = Checkbutton(frm_axes, text=m, variable=varr[m], bg="white", fg="purple")
                chk.deselect()
                chk.grid(row=count+1, sticky=W)
                update=Button(frm_axes,text="Update",command=command_chk[count])
                update.grid(row=count+1,column=1,sticky=W)

        command_chk[0] = shwgrd
        command_chk[1] = lgnd
        command_chk[2] = xtl
        command_chk[3] = ytl
        command_chk[4] = sx
        command_chk[5] = sy
        command_chk[6] = lx
        command_chk[7] = ly


        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")
        update_chkbox()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...