2016-08-11 13 views
-1

私はこの質問によく似た何かを達成しようとしています(cannot draw matplotlib chart in tkinter GUI without crashing)。リンクに表示されるコードと私のコードの唯一の違いは、次のとおりです。Python 3.5/Tkinter:マルチフレームGUIでMatplotlibを使用する(クラッシュする!)

-代わりにcanvas.get_tk_widget().pack(...)を使用していますが、canvas.get_tk_widget().grid(...)を使用しています。

- 個々のフレームごとに、columnconfigurerowconfigureを実行します。これは、各フレームでGUI要素を構成する方法であるためです。

- Spyder、Matplotlib、およびTkinterのすべてのバージョンがすべて最新のバージョンです(私はすべてのAnacondaオントップを使用しています)。

- 私はSpyderのコンソールウィンドウを単に停止し、カーネルを再起動する必要があります。

matplotlibとtkinterに関するすべてのチュートリアルを見てきました。この時点で私はあきらめる準備ができています。

EDIT#2:このコード(https://pythonprogramming.net/how-to-embed-matplotlib-graph-tkinter-gui/)をコピーして貼り付けると、まったく同じエラーが表示されます。これは、おそらくそれが私のインストールと関係すると思うかもしれません。

EDIT:コード/問題コード

マスターのAppクラスのスケルトンバージョン:

class iSEEApp(tk.Tk): 

     def __init__(self, *args, **kwargs): 
      tk.Tk.__init__(self, *args, **kwargs) 

      tk.Tk.wm_title(self, "GUI V0.5") 

      container = tk.Frame(self) 
      container.winfo_toplevel().geometry("600x600") 
      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 (pixelAnnoPage, patchAnnoPage, heatMapPage): 
       page_name = F.__name__ 
       frame = F(parent=container, controller=self) 
       self.frames[page_name] = frame 

       frame.grid(row=0, column=0, sticky="nsew") 

      self.show_frame("pixelAnnoPage") 

     def show_frame(self, page_name): 
      frame = self.frames[page_name] 
      frame.tkraise() 
      frame.focus_set() 

一般的なフレームクラスの建設/コンベンション:(buildFrame()中)

class heatMapPage(tk.Frame): 

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

     def buildFrame(self): 
      print("test") 

      #self.pack(fill="both", expand=True) 
      self.columnconfigure(1, weight = 1) 
      self.columnconfigure(3, pad = 7) 
      self.rowconfigure(3, weight = 1) 
      self.rowconfigure(5, pad = 7)   

問題コード:

self.heatFig = Figure(figsize=(5, 4), dpi=100) 
    self.heatPlot = self.heatFig.add_subplot(111) 
    self.heatPlot.plot([1,2,3,4,5,6,7,8],[5,6,7,8,1,2,2,1]) 

    self.heatCanvas = FigureCanvasTkAgg(self.heatFig, master=self) 
    self.heatCanvas.get_tk_widget().grid(row=1, column=0, columnspan=2, rowspan=4, padx=5, sticky="nsew") 
    self.heatCanvas.show() 

答えて

-1

申し訳ございません。だから、この問題は私のコードと関係がないことが判明しました。私が上で述べたように、私はAnaconda Pythonパッケージを使用しています。つまり、私の主要インストーラはPIPではなくCondaです。 conda upgrade matplotlibを実行するたびに、すべてが最新のものであると主張するメッセージが表示されます。しかし、私が最後にpython -m pip install --upgrade matplotlibをやったとき、それはライブラリが最新ではないことが判明しただけでなく、まったく別のファイルでした!基本的に何が起こったのは、AnacondaとAnaconda Cloudが提供するmatplotlibライブラリが壊れていることです!自分のプロジェクトでこの問題が発生した場合は、PIPを使用してライブラリを確認してください。

関連する問題