PySImpleGUIのCanvasにMF4データを表示する
以前下記リンクで紹介したMF4 demoデータ作成コードで作詞されたMF4データをGUIに表示するスクリプトです。
8行目と9行目 本来は、mdfFile, jsonFileともユーザが選択して、読み込むべきなのですがサンプルということで決め打ちで読み込むようにしております。
jsonFileで指定された計測信号のみCanvasへプロットする構成となっています。
import utyMdfJson
import utyGLO
import numpy as np
import PySimpleGUI as sg
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
mdfFile = "/Users/SampleData/DemoData/demo.mf4"
jsonFile = "/Users/PyTools/MDF_Programs/mdfplot_2d/DemoPlt.json"
mdfData = utyMdfJson.MDF_Open(mdfFile)
dataList = utyMdfJson.ExtractMdf(mdfData)
jsonData = utyMdfJson.loadJsonFile(jsonFile)
selectList = utyGLO.generateSelectList(jsonData, "data_list")
# スライダーの幅と高さ
width = 50
height = 20
def draw_figure(canvas, figure):
figure_canvas_agg = FigureCanvasTkAgg(figure, canvas)
figure_canvas_agg.draw()
figure_canvas_agg.get_tk_widget().pack(side='top', fill='both', expand=1)
return figure_canvas_agg
layout = [[sg.Text('Canvas on GUI Sample')],
[sg.Canvas(size=(720,480), key='-CANVAS-')],
[sg.Slider(range=(0, 100), default_value = 0.0, resolution = 0.1, size=(width, height), orientation = 'h')]
]
window = sg.Window('Demo Application - Canvas on GUI Sample', layout, finalize=True, element_justification='center', font='Monospace 18')
fig = plt.figure(figsize=(12, 7))
#fig = plt.figure()
ax = fig.add_subplot(111)
utyMdfJson.Plot_Canvas(mdfData, selectList)
# figとCanvasを関連付ける.
fig_agg = draw_figure(window['-CANVAS-'].TKCanvas, fig)
# イベントループ
while True:
event, values = window.read()
print(event, values)
if event in (None, "Cancel"):
break
# ウィンドウを閉じる.
window.close()
#asammdf, #PySimpleGUI, #Python, #MF4, #MDF
最近のコメント