top of page

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()
 
 
 

最新記事

すべて表示
PythonでYAHOO検索もスクレイピング

前回Google検索結果のTOP100取ったのでYAHOOも追加。 YAHOOは10件ずつしか取れないので注意! #!/usr/bin/env python3 # -*- coding: utf-8 -*- # 指定のURLをブラウザで開く #...

 
 
 

Comments


記事: Blog2_Post

©2021 by 日々Python。Wix.com で作成されました。

bottom of page