【发布时间】: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