0
我想了解如何清除畫布(tkinter)中的情節,這是一個框架的孩子。我的問題是,這發生在一個show()函數內的一個不同於創建框架的類中。所以關於show()的想法是,它會被調用很多次,而不是在每次調用show()時從零開始銷燬小部件和創建所有東西,我希望canvas中的plot是一個子項幀被清除/更新,但小部件被保留。如何從tkinter的父框架中清除/更新子部件中的繪圖?
這可能是更容易也許僞代碼來理解:
class A():
def__init__(self, master):
sframe = Frame(master)
sframe.pack(side=RIGHT)
f = Figure(figsize=(3,2), dpi=100)
a = f.add_subplot(122);
# initially plots a sine wave
t = arange(0.0, 1, 0.01);
s = sin(2*pi*t);
a.plot(t,s);
canvas = FigureCanvasTkAgg(f, master=sframe)
canvas.show()
canvas.get_tk_widget().pack(side=TOP, fill=BOTH, expand=1)
# now i create the other object that will call show()
data_obj = B(sframe)
class B():
...
show(self, frame):
_wlist = frame.winfo_children()
for item in _wlist:
item.clear() # or something like this
# and then re-plot something or update the current plot
代碼的最後一部分是在那裏我有一些問題。我不確定如何清除框架中的小部件。我如何知道它是哪種類型的小部件,以及如何清除它或更新它?我得到:
*** AttributeError: Canvas instance has no attribute 'clear'
任何想法都是值得歡迎的。非常感謝!
沒人?任何想法在哪裏尋找這樣的東西? – edgarbc
我通過清除與幀中圖形相關的軸來解決此問題。最初我想使用框架訪問圖形和軸。然而,我還沒有找到一種方法來做到這一點,所以我在將該軸傳遞給B類的構造函數之前將該軸添加到了框架中。 – edgarbc