Anaconda3-2.4.0-Windows-x86_64安装包括Python 3.5 64位和Spyder 2.3.7 .

Windows 7专业版,SP1,64位 .

我试图在youtube上关注一系列视频,将matplotlib图形添加到tkinter窗口,前5个视频覆盖了tkinter窗口中窗口和按钮的初始创建,这一切都非常简单 . 当我到达第一个matplotlib添加时出现问题 . 即使我复制了视频中的人在Python中的确切内容,我得到一个错误,他得到一个工作程序 .

以下是我目前正在尝试关注的视频的链接:

How to add a Matplotlib Graph to Tkinter Window in Python 3 - Tkinter tutorial Python 3.4 p. 6

播放时右侧系列中有其他视频列表 .

ipython控制台中给出的错误消息是:“内核似乎意外死亡 . 使用'重启内核'继续使用此控制台” . 该消息每隔几秒重复一次,直到选择“重启内核” .

在下面的代码中,如果它按原样运行,则不会打开任何窗口 . 如果'canvas.show()'被注释掉,则会打开一个窗口,并在Windows中显示python崩溃错误 .

如果'canvas.show()','canvas.get_tk_widget() . pack(side = tk.TOP,fill = tk.BOTH,expand = True)'和'canvas._tkcanvas,程序运行并且按钮全部正常运行 . pack()'都被注释掉了 .

我已经研究了这个并发现了版本4.0.6和4.1.1的zeromq问题,这些问题已在新版本中修复 . 在anaconda提示符中使用'conda list'命令显示版本号4.1.3,因此我不认为这是问题 .

我在python 3.5中运行'sentdex'(视频中的人)运行3.4,这是否会导致问题?

这是我的代码(减去3个打开带按钮的窗口的类):

import matplotlib
matplotlib.use("TkAgg")

from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
from matplotlib.figure import Figure

import tkinter as tk
from tkinter import ttk

LARGE_FONT = ("Arial, 12")

class Home(tk.Tk):

    def __init__(self, *args):

        tk.Tk.__init__(self, *args)

        tk.Tk.iconbitmap(self, default="icon1.ico")
        tk.Tk.wm_title(self, "Converters & Calculators")

        container = tk.Frame(self)
        container.pack(side = "top", fill = "both", expand = True)
        container.grid_columnconfigure(0, weight=1)
        container.grid_rowconfigure(0, weight=1)

        self.frames = {}
        for F in (StartPage, MPL_Tutorial):

            frame = F(container, self)
            self.frames[F] = frame
            frame.grid(row = 0, column = 0, sticky = "nsew")

        self.show_frame(StartPage)

    def show_frame(self, cont):

        frame = self.frames[cont]
        frame.tkraise()

class StartPage(tk.Frame):

    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)

        label = tk.Label(self, text="Please select a calculator or convertor from  the list:", font = LARGE_FONT)
        label.pack(pady=20, padx=20)

        MPL_Tutorial_button = ttk.Button(self, text = "Graph Page", command=lambda: controller.show_frame(MPL_Tutorial))
        MPL_Tutorial_button.pack()

class MPL_Tutorial(tk.Frame):

    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)

        label = tk.Label(self, text="Graph Page", font = LARGE_FONT)
        label.pack(pady=20, padx=20)

        Home_button = ttk.Button(self, text = "Home", command=lambda: controller.show_frame(StartPage))
        Home_button.pack()

        f = Figure(figsize = (5,5), dpi=100)
        a = f.add_subplot(111)
        a.plot([1,2,3,4,5,6,7,8], [5,8,1,3,7,4,9,5])

        canvas = FigureCanvasTkAgg(f, self)
        canvas.show()
        canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand = True)

        toolbar = NavigationToolbar2TkAgg(canvas, self)
        toolbar.update()
        canvas._tkcanvas.pack()


app = Home()
app.mainloop()

我在编写程序时编辑了一些内容,以反映我最终想要程序的应用程序,用于各种工程零碎的计算器/转换器,例如“反射系数/ VSWR比率/回波损耗转换” . 我相信我编辑的唯一东西是事物的名称和一些填充值 .

任何帮助将不胜感激!我完全期望答案是我做错了,我对编程整体都是新手 .

编辑:删除了一些代码,这些代码引用了我遗漏的其他代码,因为如果有人试图运行它,这无疑会导致“额外”问题 .