Я делаю приложение, которое получает данные из файла Excel и строит их. до сих пор я могу наносить данные, но добавляю флажок и хочу, чтобы пользователь сам решил, что он хочет добавить на график. поэтому, когда я выбираю флажок, кажется, ничего не происходит, но когда я нажимаю на параметры слайдера на графике, график обновляется. так что это не то, что я хочу, так как я хочу, чтобы сам график обновлялся, когда я нажимал на флажок. Некоторые части кода ниже:
![enter image description here](https://i.stack.imgur.com/rnto7.jpg)
![enter image description here](https://i.stack.imgur.com/N89gX.jpg)
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()