PythonでGUIにグラフ表示
- hiro2studio
- 2021年2月17日
- 読了時間: 1分
wxPythonを使ってGUI作りながら、画面上にmatplotlibのグラフを表示したい!
ということで色々と調べながら作成したのがこちら!
ボタン押したらグラフ表示します
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import matplotlib
matplotlib.use('WXAgg')
from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas
from matplotlib.backends.backend_wx import NavigationToolbar2Wx
from matplotlib.figure import Figure
import wx
import numpy as np
import random
class TestGUI(wx.Frame):
def __init__(self, parent, id=-1, title='TEST GUI'):
wx.Frame.__init__(self, parent, id, title)
self.SetTitle('TEST GUI')
self.SetSize((300, 400))
panel = wx.Panel(self)
self.sizer = wx.BoxSizer(wx.VERTICAL)
# ボタンの作成
self.Btn = wx.Button(panel, -1, label="push",size=(60, 20))
# ボタンを割り当て
self.Bind(wx.EVT_BUTTON, self.push, self.Btn)
# ラベルの作成
self.label = wx.StaticText(panel, -1, ' ')
# Plot
#wx.Panel.__init__(self, parent)
self.fig = Figure()
self.axes = self.fig.add_subplot(111)
self.canvas = FigureCanvas(panel, -1, self.fig)
self.sizer.Add(self.Btn)
self.sizer.Add(self.label)
self.sizer.Add(self.canvas, 1, wx.LEFT | wx.TOP | wx.GROW)
#self.SetSizer(self.sizer)
panel.SetSizer(self.sizer)
panel.Fit()
self.Show(True)
def push(self, event):
self.label.SetLabel('OK')
# int型の0で初期化
fig1 = np.zeros((10, 10, 2), dtype=np.int)
fig2 = np.zeros((10, 10, 2), dtype=np.int)
for i in range(0, 10):
for j in range(0, 10):
fig1[i][j][0] = j * 10
fig1[i][j][1] = i * 10
fig2[i][j][0] = j * 11
fig2[i][j][1] = i * 11
self.axes.scatter(fig1[i][j][0], fig1[i][j][1], c='red')
self.axes.scatter(fig2[i][j][0], fig2[i][j][1], c='c')
self.axes.grid(True)
self.canvas.draw()
#-------------------------------------------------
## main ###
#-------------------------------------------------
if __name__=='__main__':
app=wx.App()
TestGUI(None, wx.ID_ANY, "Btn")
app.MainLoop()
Comments