我正在構建一個控制應用程式,我使用 matplotlib.figure 圖來表示一些資料。我制作了一個函式來進行繪圖,但問題是洗掉繪圖。我無法從視窗中洗掉該圖,因為它無論如何都會留在那里。我試過使用tk_widget.place_forget()、tk_widget.destroy()和figure_subplot.remove(),但視窗停留在那里。
def plot_box_1(sx, sy, px, py):
fig = Figure(figsize=(sx/100, sy/100), dpi=100)
pl1 = fig.add_subplot(111)
pl1.plot(y)
pltwidget = FigureCanvasTkAgg(fig, master=window)
pltwidget.draw()
tkplt = pltwidget.get_tk_widget()
tkplt.place(x=px, y=py)
return tkplt, pl1
def b5_updater():
global tab, asdf, current_after
p1 = page[5]["p1"]
p2 = page[5]["p2"]
box_pos = page[5]["box_pos"]
if tab == 5:
if asdf == 100:
asdf = 0
p1['value'] = asdf
p2['value'] = 100 - asdf
y.append(asdf)
if len(y) >= plot_lim:
y.pop(0)
asdf = 1
page[5]["plt_wid"], page[5]["pl1"] = plot_box_1(250, 180, box_pos[2][0] 25, box_pos[2][1] 30)
current_after = window.after(20, b5_updater)
else:
window.after_cancel(current_after) if current_after is not None else None
p1.destroy()
p2.destroy()
page[5]["plt_wid"].place_forget()
page[5]["pl1"].remove()
page[5]["plt_wid"].destroy()
print("Closed B5 Successfully")
在包括 tkinter 中的 Canvas 在內的多個專案上嘗試了 .remove、.destroy、.place_forget,圖表仍然存在。
uj5u.com熱心網友回復:
如果您想完全洗掉 tkinter 小部件,請執行以下操作:
pltwidget.get_tk_widget().destroy()
如果您只想清除數字,請使用:
fig.clear()
這兩種選擇都適合我。您可以通過在 的回傳值之前嘗試這些選項來單獨測驗它def plot_box_1()。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/533599.html
