Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 导航工具栏未显示在窗口上_Python_Python 3.x_Tkinter_Tkinter Canvas - Fatal编程技术网

Python 导航工具栏未显示在窗口上

Python 导航工具栏未显示在窗口上,python,python-3.x,tkinter,tkinter-canvas,Python,Python 3.x,Tkinter,Tkinter Canvas,我正在尝试将导航工具栏放置在画布窗口中。但当我尝试运行代码时,只有工具栏显示。我尝试的行也包含在下面的#中。如何解决这个问题 代码是可执行的。第一个窗口的值已分配,只需单击“单击”按钮 调用NavigationToolbar2Tk(图,画布)时,使用的底层方法是容器canvas上的pack,这与通过create\u window方法创建的其余小部件冲突。您需要创建一个框架来固定工具栏,然后在框架上调用创建窗口: import tkinter as tk import numpy as np im

我正在尝试将导航工具栏放置在画布窗口中。但当我尝试运行代码时,只有工具栏显示。我尝试的行也包含在下面的
#
中。如何解决这个问题

代码是可执行的。第一个窗口的值已分配,只需单击“单击”按钮


调用
NavigationToolbar2Tk(图,画布)
时,使用的底层方法是容器
canvas
上的
pack
,这与通过
create\u window
方法创建的其余小部件冲突。您需要创建一个
框架
来固定工具栏,然后在框架上调用
创建窗口

import tkinter as tk
import numpy as np
import matplotlib
matplotlib.use('TkAgg')
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk
from matplotlib.figure import Figure

root = tk.Tk()
root.geometry("500x450")

fig = Figure(figsize=(5, 4), dpi=100)
t = np.arange(0, 3, .01)
fig.add_subplot(111).plot(t, 2 * np.sin(2 * np.pi * t))

canvas = tk.Canvas(root)
canvas.pack(fill="both",expand=True)

figure_canvas = FigureCanvasTkAgg(fig, root)
figure_canvas.draw()

toolbar_frame = tk.Frame(canvas)
toolbar = NavigationToolbar2Tk(figure_canvas, toolbar_frame)
toolbar.update()

canvas.create_window(0,0, window=figure_canvas.get_tk_widget(), anchor=tk.NW)
canvas.create_window(0,400, window=toolbar_frame, anchor=tk.NW)

root.mainloop()
但从您当前的设置来看,实际上并不需要调用所有
create\u window
。相反,您可以简单地使用
网格将它们排列起来,并创建一个额外的框架来存储
工具栏

def open_window1():
    y = 1/2
    b = 1/4

    ...

    top = tk.Toplevel()
    top.wm_geometry("1400x594")
    top.title('Result table')

    canvas = tk.Canvas(top,bg="white", width=1395, height=594)
    canvas.grid(row=0,column=180)

    result_labels = ("ti","Pi","Pni","u''i", "u'i","ui")

    for num, txt in enumerate(result_labels):
        tk.Label(canvas, text=txt, font= "calibri 13", bg="white",width=10).grid(row=0,column=num,padx=12,pady=8)
        for col, item in enumerate([t,p,pn,a,v,u]):
            tk.Label(canvas, text=item[num], font="calibri 12", bg="white").grid(row=num+1,column=col,padx=12,pady=8)

    f = Figure(figsize=(5,5), dpi=100)
    q = f.add_subplot(111)
    q.plot(t,a)

    figure = FigureCanvasTkAgg(f, canvas)
    figure.draw()
    figure.get_tk_widget().grid(row=0,column=6,rowspan=7,padx=5,pady=2)

    tool_bar_frame = Frame(canvas)
    toolbar= NavigationToolbar2Tk(figure, tool_bar_frame)
    toolbar.update()
    tool_bar_frame.grid(row=7,column=6,pady=2)

这是可行的,但我想学习使用canvas.create_窗口放置navigationtoolbar,这样我就可以精确地将其放置到所需的位置。想法是一样的-您需要先将其放置在一个框架中。然后使用
create_window
来放置框架。我尝试了canvas.create_window(850800,window=figure.\u-tkcanvas,anchor=tk.NW),但只有工具栏显示,而表没有显示。
def open_window1():
    y = 1/2
    b = 1/4

    ...

    top = tk.Toplevel()
    top.wm_geometry("1400x594")
    top.title('Result table')

    canvas = tk.Canvas(top,bg="white", width=1395, height=594)
    canvas.grid(row=0,column=180)

    result_labels = ("ti","Pi","Pni","u''i", "u'i","ui")

    for num, txt in enumerate(result_labels):
        tk.Label(canvas, text=txt, font= "calibri 13", bg="white",width=10).grid(row=0,column=num,padx=12,pady=8)
        for col, item in enumerate([t,p,pn,a,v,u]):
            tk.Label(canvas, text=item[num], font="calibri 12", bg="white").grid(row=num+1,column=col,padx=12,pady=8)

    f = Figure(figsize=(5,5), dpi=100)
    q = f.add_subplot(111)
    q.plot(t,a)

    figure = FigureCanvasTkAgg(f, canvas)
    figure.draw()
    figure.get_tk_widget().grid(row=0,column=6,rowspan=7,padx=5,pady=2)

    tool_bar_frame = Frame(canvas)
    toolbar= NavigationToolbar2Tk(figure, tool_bar_frame)
    toolbar.update()
    tool_bar_frame.grid(row=7,column=6,pady=2)