今、Pythonでファイルをファイルの生データを選択して処理した結果を表示するGUIのプログラムを書いているのですが、上手くいかないので教えてください。
GUIにはwxPythonを使用しています。処理はできているのですがその結果を上手くGUIのウィンドウにもっていくことができません。ファイルを選択してから表示したいグラフをウィンドウの方のボタンを押すことで表示したいのですが、表示されずに止まってしまいます。
上手くいかないのはCalss以降なのですが、最初はbuttonのイベントにグラフを表示するイベントを入れれば表示されると思っていたのですが、止まってしまい。ウィンドウにグラフを表示する場所を指定していなかったからかと思いやってみたのですが、動かず。それはグラフを表示するキャンバスのエラーだったので、最初に空のFigureを入れとけば、イベント実行後切り替わるかと思ったのですが、止まってしまいました。修正点を教えてください。
そもそも何がいけないのかよくわかっていないので、そこらへんから教えていただけるとありがたいです。
Python3.7
1from mpl_toolkits.mplot3d import Axes3D 2import numpy as np 3import csv 4import matplotlib.pyplot as plt 5from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg 6import copy 7import wx 8%matplotlib notebook 9 10#ファイル選択ダイアログ+解析の処理がありますが、長くなる+研究なので割愛 11 12def plot_2D(): 13 global fig_2D 14 fig_2D = plt.figure() 15 plt.plot(x_axis,plot[1]) 16 17def plot_3D(): 18 global fig_3D 19 fig_3D = plt.figure() 20 ax = Axes3D(fig_3D) 21 color3d = ax.plot_surface(X, Y, Z_np, cmap='hot') 22 23def plot_2D_color(): 24 global fig_2D_color 25 fig_2D_color = plt.figure() 26 color2d = plt.pcolormesh(X, Y, Z_np, cmap='hot') 27 28class CustomFrame(wx.Frame): 29 30 def __init__(self,title): 31 wx.Frame.__init__(self,None,-1,title,size=(1200,800)) 32 33 def click_open(event): 34 #ファイル選択+前処理 35 open_file() 36 plot_2D_color() 37 38 def click_2D(event): 39 plot_2D() 40 41 def click_3D(event): 42 plot_3D() 43 44 self.panel = wx.Panel(self) 45 46 self.panel_1 = wx.Panel(self.panel,wx.ID_ANY) 47 self.panel_2 = wx.Panel(self.panel,wx.ID_ANY) 48 49 self.panel_1.SetBackgroundColour('#FCF8F0') 50 self.panel_2.SetBackgroundColour('#FC4000') 51 self.panel.SetBackgroundColour('#C70230') 52 53 layout = wx.BoxSizer(wx.VERTICAL) 54 layout.Add(self.panel_1, flag=wx.EXPAND) 55 layout.Add(self.panel_2, flag=wx.EXPAND) 56 self.panel.SetSizer(layout) 57 58 Butt_1 = wx.Button(self.panel_1,wx.ID_ANY,'開く') 59 Butt_2 = wx.Button(self.panel_1,wx.ID_ANY,'2D断面') 60 Butt_3 = wx.Button(self.panel_1,wx.ID_ANY,'3D形状') 61 62 Butt_1.Bind(wx.EVT_BUTTON, click_open) 63 Butt_2.Bind(wx.EVT_BUTTON, click_2D) 64 Butt_3.Bind(wx.EVT_BUTTON, click_3D) 65 66 layout_Butt = wx.BoxSizer(wx.HORIZONTAL) 67 layout_Butt.Add(Butt_1) 68 layout_Butt.Add(Butt_2) 69 layout_Butt.Add(Butt_3) 70 self.panel_1.SetSizer(layout_Butt) 71 72 fig_2D_color = plt.figure() 73 fig_2D = plt.figure() 74 fig_3D = plt.figure() 75 76 self.canvas_1 = FigureCanvasWxAgg(self.panel_2, wx.ID_ANY, fig_2D_color) 77 self.canvas_2 = FigureCanvasWxAgg(self.panel_2, wx.ID_ANY, fig_2D) 78 self.canvas_3 = FigureCanvasWxAgg(self.panel_2, wx.ID_ANY, fig_3D) 79 80 layout_Panel = wx.BoxSizer(wx.HORIZONTAL) 81 layout_Panel.Add(self.canvas_1) 82 layout_Panel.Add(self.canvas_2) 83 layout_Panel.Add(self.canvas_3) 84 self.panel_2.SetSizer(layout_Panel) 85 86 plt.show() 87 88 89 self.Show() 90 91app = wx.App() 92CustomFrame('AFM') 93app.MainLoop()
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/15 12:51 編集
2019/01/15 14:56 編集
2019/01/15 15:32
2019/01/15 16:56
2019/01/16 06:28