Python 我如何管理“的位置?”;导航工具栏2TKAGG“;工具栏?
我正在学习如何使用matplotlib,现在我遇到了一个问题。当我在“tkinter项目”中创建一个Python 我如何管理“的位置?”;导航工具栏2TKAGG“;工具栏?,python,matplotlib,tkinter,toolbar,Python,Matplotlib,Tkinter,Toolbar,我正在学习如何使用matplotlib,现在我遇到了一个问题。当我在“tkinter项目”中创建一个图并给它一个子图时,我使用NavigationToolbar2TkAgg创建一个工具栏。此工具栏显示在图表的顶部。如何将其设置到其他位置,如底部或左侧 代码如下: import tkinter as tk from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg from mat
图
并给它一个子图时,我使用NavigationToolbar2TkAgg
创建一个工具栏。此工具栏显示在图表的顶部。如何将其设置到其他位置,如底部或左侧
代码如下:
import tkinter as tk
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
from matplotlib.figure import Figure
root = tk.Tk()
root.title("I am a newbie!")
# create the figure instances
fig = Figure()
a = fig.add_subplot(122)
b = fig.add_subplot(121)
# figure1 has two subplot and figure 2 has only one
fig2 = Figure(figsize=(2, 2))
c = fig2.add_subplot(111)
# create canvas1
canvas = FigureCanvasTkAgg(fig, root)
canvas.show()
canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.X)
# put this to the top of the window
# toolbar for canvas1 (figure1)
toolbar = NavigationToolbar2TkAgg(canvas, root)
toolbar.update()
# create canvas2
canvas2 = FigureCanvasTkAgg(fig2, root)
canvas2.show()
canvas2.get_tk_widget().pack(side=tk.BOTTOM, fill=tk.X)
# put this to the bottom
# toolbar for canvas2 (figure2)
toolbar2 = NavigationToolbar2TkAgg(canvas2, root)
toolbar2.update()
# this function just to exit
def _quit():
root.quit()
root.destroy()
button = tk.Button(master=root, text='Quit', command=_quit)
button.pack(side=tk.BOTTOM)
root.mainloop()
这是显示的窗口:
- 为什么工具栏1的位置在底部
- 为什么工具栏2在画布上
我想学习如何设置它们的位置。当通过
toolbar = NavigationToolbar2TkAgg(canvas, window)
方法NavigationToolbar2TkAgg.\u init\u toolbar
被调用。它将window
设置为父窗口小部件,并在方法末尾调用self.pack(side=Tk.BOTTOM,fill=Tk.X)
。这会影响工具栏在窗口中的放置方式
通过为工具栏创建tk.Frame
小部件,可以更改工具栏的位置
frame1 = tk.Frame(root)
frame2 = tk.Frame(root)
canvas = FigureCanvasTkAgg(fig, root)
toolbar = NavigationToolbar2TkAgg(canvas, frame1)
canvas2 = FigureCanvasTkAgg(fig2, root)
toolbar2 = NavigationToolbar2TkAgg(canvas2, frame2)
frame1.pack(side=tk.TOP, fill=tk.X)
canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.X)
frame2.pack(side=tk.TOP, fill=tk.X)
canvas2.get_tk_widget().pack(side=tk.TOP, fill=tk.X)
button = tk.Button(master=root, text='Quit')
button.pack(side=tk.TOP)
由于工具栏现在放置在框架内,因此第二个工具栏的pack()
调用不会影响“退出”按钮
所讨论的方法:.不太了解tkinter,但听起来您可能需要使用图形画布和工具栏创建自己的窗口框架。这样你就可以把工具栏放在你喜欢的任何地方。不过,这可能需要做很多工作。如果你做一个调查并发布你的代码,这会有所帮助。@Ajean,@pathren谢谢你的回答,我刚刚编辑了这个问题,你能看一下吗?:)非常感谢。在你的帮助下,我终于解决了这个问题!还要感谢@pathren