私は現在チュートリアル: Here is the one I am followingとこのリンクをたどっています。その男はあなたにコードを与えます。とにかく底にそれを含めました。は、クラッシュせずにtkinter GUIでmatplotlibのグラフを描画できません。
確かにお勧めしますか?
- :しかし、今問題に直面して(も年齢を取りました!) 。
問題の原因となっている3つの行をハッシュタグにしました。これらの行がアクティブでないときは正常に動作します。起動して実行すると、端末がクラッシュしてメッセージが表示されます。
突然カーネルが亡くなったようです。このコンソールの使用を続行するには、 'Restart kernel'を使用します。
私は本当に解決策を探しています。目的はTkinter GUIにクラッシュすることなくグラフを取得することです。助けてください!?ここで
コードは、リンクで提供1とほぼ同じです:
import matplotlib
#matplotlib.use("TkAgg")
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg,NavigationToolbar2TkAgg
from matplotlib.figure import Figure
import tkinter as tk
import pandas as pd
from tkinter import ttk
LARGE_FONT=("Consolas",12)
class SeaofBTCapp(tk.Tk):
def __init__(self,*args,**kwargs):
#
#tk.Tk.wm_title(self,"")
print("")
tk.Tk.__init__(self,*args,**kwargs)
tk.Tk.wm_title(self,"Hold my Hand")
tk.Tk.iconbitmap(self,default="1.ico")
container=tk.Frame(self)
container.pack(side="top", fill="both",expand=True)
container.grid_rowconfigure(0,weight=1)
container.grid_columnconfigure(0,weight=1)
self.frames={}
for F in (StartPage,PageThree):
frame=F(container, self)
self.frames[F]=frame
frame.grid(row=0,column=0,sticky="nsew") #north south east west
self.show_frame(StartPage)
def show_frame(self, cont):
frame = self.frames[cont]
frame.tkraise()
def qf(stringtoprint):
print(stringtoprint)
class StartPage(tk.Frame):
def __init__(self,parent,controller):
ttk.Frame.__init__(self,parent)
label=ttk.Label(self,text="Testing",font=LARGE_FONT)
label.pack(pady=10,padx=10)
button3=ttk.Button(self, text="Graph page",
command=lambda:controller.show_frame(PageThree))
#lambda:controller.show_frame(PageOne))
button3.pack()
class PageThree(tk.Frame):
def __init__(self, parent, controller):
# app=tk.Tk()
tk.Frame.__init__(self,parent)
label=tk.Label(self,text="Graph Page",font=LARGE_FONT)
label.pack(pady=10,padx=10)
label1=ttk.Button(self, text="Start Page",
command=lambda:controller.show_frame(StartPage))
label1.pack()
label1=ttk.Button(self, text="Back to Home",
command=lambda:controller.show_frame(StartPage))
label1.pack()
# f=Figure(figsize=(5,5))
# a=f.add_subplot(111)
# a.plot([1,2,3,4,5,6,7,8],[5,6,7,8,1,2,2,1])
# canvas=FigureCanvasTkAgg(f,self)
# canvas.show()
# canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH,expand=True)
app=SeaofBTCapp()
app.mainloop()
それは、スパイダーがクラッシュする上記三から六行です。
コードが多すぎます。これを10-15行の例に減らすことはできますか? – tacaswell
@Panik matplotlibの例を確認できますか? http://matplotlib.org/examples/user_interfaces/embedding_in_tk.htmlをご覧ください。 – mfitzp
@tcaswellはコードを更新して縮小しますが、小さな15行の例では作成できませんが、できる限り小さくします! – Panik