【问题标题】:Issues clearing tkinter canvas清除 tkinter 画布的问题
【发布时间】:2019-12-24 12:20:23
【问题描述】:

我写了一个程序来绘制一些情节。我想清除屏幕并重用相同的画布来绘制不同的情节。我该怎么做? ocanvas 是我在其上附加滚动条的外部画布。 innerCanvas 是我绘制的画布。第一次按“Go”时,我调用函数 drawGraph。我希望下次按“Go”然后调用drawGraph2时清除innerCanvas。有没有办法做到这一点?以下是我的代码:

(我是 Python 的初学者,因此我不知道所有的概念/功能。)


from tkinter import *
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure

def on_configure(event=None):
    canvas.configure(scrollregion=canvas.bbox("all"))    

def drawGraph(innerCanvas):

    for i in range(5):
        f = Figure(figsize=(5,5), dpi=100)
        a = f.add_subplot(111)
        a.plot([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18],[5,6,1,3,8,9,3,5,9,7,6,5,7,3,2,9,3,5])

        canvas = FigureCanvasTkAgg(f, innerCanvas)
        canvas.draw()
        canvas.get_tk_widget().pack(side=LEFT, fill=BOTH, expand=True)


def drawGraph2(innerCanvas):

    for i in range(5):
        f = Figure(figsize=(5,5), dpi=100)
        a = f.add_subplot(111)
        a.plot([1,2,3,4,5,6,7,8,9,10,11,12,13,14],[3,4,5,6,8,9,0,1,23,44,4,5,17,5])

        canvas = FigureCanvasTkAgg(f, innerCanvas)
        canvas.draw()
        canvas.get_tk_widget().pack(side=LEFT, fill=BOTH, expand=True)

root=Tk()
ocanvas=Canvas(root)
innerCanvas=Canvas(canvas)

xscrollbar=Scrollbar(ocanvas, orient=HORIZONTAL)
xscrollbar.config(command=ocanvas.xview)

button=Button(root, text='Go',command= lambda: drawGraph(frame))
button.pack()

ocanvas.configure(scrollregion=ocanvas.bbox("all"))
ocanvas.config(xscrollcommand=xscrollbar.set)


xscrollbar.pack(side=BOTTOM, fill=X)

ocanvas.bind("<Configure>", on_configure)
ocanvas.pack(fill=BOTH, expand=True)
ocanvas.create_window((0,0),window=innerCanvas, anchor='nw')
root.geometry('500x500')
root.mainloop()

任何帮助将不胜感激。

【问题讨论】:

    标签: python-3.x canvas tkinter


    【解决方案1】:

    要清除innerCanvas,你可以在调用drawGraph2之前销毁它的孩子。

    for figureCanvas in innerCanvas.winfo_children():
        figureCanvas.destroy()
    

    【讨论】:

    • 非常感谢您的帮助!你的建议有效。谢谢你。非常感谢。
    猜你喜欢
    • 2011-08-10
    • 2013-03-28
    • 2011-09-08
    • 2017-01-10
    • 2015-07-17
    • 2019-01-22
    • 1970-01-01
    • 1970-01-01
    • 2021-01-08
    相关资源
    最近更新 更多