[英]Scrollbars seem not working and How can I delete embedded plot with a button with Tkinter
我正在尝试制作我的第一个应用程序,但我遇到了一些问题。 首先,我创建的滚动条似乎不起作用,一旦我使用“显示”按钮,只需绘制一些点,垂直滚动条就会出现在框架的“中间”而不是我想要的边缘,此外,当我尝试使用它,没有任何反应。 此外,水平滚动条消失。
除了滚动条,我想知道如何删除我创建的图,因为每次我使用“显示”时,图都不会出现在第一个图的同一位置,而是在它下面。
class MyApp(tk.Tk):
def __init__(self, *args,**kwargs):
tk.Tk.__init__(self,*args,**kwargs)
tk.Tk.title(self, 'APP')
container = tk.Frame(self)
container.grid(column=0,row=0,sticky='nswe')
container.grid_rowconfigure(0,weight=1)
container.grid_columnconfigure(0, weight=1)
self.frames = {}
for F in (Page1,Page2):
frame = F(container,self)
self.frames[F] = frame
frame.grid(row=0,column=0,sticky='nsew')
self.show_frame(Page1)
def show_frame(self, cont):
frame = self.frames[cont]
frame.tkraise()
class Page1(tk.Frame):
def __init__(self,parent,controller):
tk.Frame.__init__(self, parent)
self.canvas = tk.Canvas(self,width=500,height=500,
scrollregion=(0,0,500,800))
#Creating scrollbars
self.xscrollbar = tk.Scrollbar(self, orient=tk.HORIZONTAL)
self.xscrollbar.pack(side=tk.BOTTOM,fill=tk.X)
self.xscrollbar.config(command=self.canvas.xview)
self.yscrollbar = tk.Scrollbar(self, orient=tk.VERTICAL)
self.yscrollbar.pack(side=tk.RIGHT,fill=tk.Y)
self.yscrollbar.config(command=self.canvas.yview)
self.canvas.config(width=500,height=500)
self.canvas.config(xscrollcommand=self.xscrollbar.set,
yscrollcommand=self.yscrollbar.set)
self.canvas.pack(fill=tk.BOTH,expand=True)
label = tk.Label(self, text='Page1')
label.pack()
def showplot():
fig = Figure(figsize=(10,5),dpi=100)
a = fig.add_subplot(111)
x = [1,2,3,4,5,6,7,8,9,10]
y = [1.2,2,4.6,3,6,7,10,12,12.6,17]
a.plot(x,y)
canvas = FigureCanvasTkAgg(fig, self)
canvas.draw()
toolbar = NavigationToolbar2Tk(canvas, self)
toolbar.update()
canvas.get_tk_widget().pack(side=tk.TOP,fill=tk.BOTH,expand=True)
canvas._tkcanvas.pack(side=tk.TOP,fill=tk.BOTH,expand=True)
def clean():
canvas.get_tk_widget().destroy()
button1 = ttk.Button(self, text='Go to Page2',
command=lambda: controller.show_frame(Page2))
button1.pack()
button2 = ttk.Button(self,text='Show', command = showplot)
button2.pack()
button3 = ttk.Button(self, text='Clean', command=clean)
button3.pack(side=tk.RIGHT, expand=True)
class Page2(tk.Frame):
def __init__(self,parent,controller):
tk.Frame.__init__(self, parent)
self.canvas = tk.Canvas(self,width=500,height=500,scrollregion=(0,0,500,800))
#Creating scrollbars
self.xscrollbar = tk.Scrollbar(self, orient=tk.HORIZONTAL)
self.xscrollbar.pack(side=tk.BOTTOM,fill=tk.X)
self.xscrollbar.config(command=self.canvas.xview)
self.yscrollbar = tk.Scrollbar(self, orient=tk.VERTICAL)
self.yscrollbar.pack(side=tk.RIGHT,fill=tk.Y)
self.yscrollbar.config(command=self.canvas.yview)
self.canvas.config(width=500,height=500)
self.canvas.config(xscrollcommand=self.xscrollbar.set,
yscrollcommand=self.yscrollbar.set)
self.canvas.pack(fill=tk.BOTH,expand=True)
app = MyApp()
app.mainloop()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.