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比率/回波损耗转换” . 我相信我编辑的唯一东西是事物的名称和一些填充值 .
任何帮助将不胜感激!我完全期望答案是我做错了,我对编程整体都是新手 .
编辑:删除了一些代码,这些代码引用了我遗漏的其他代码,因为如果有人试图运行它,这无疑会导致“额外”问题 .