ryotankの備考録日記

趣味の電子工作についての備考録などなど

グラフアプリその1

グラフを扱えれば色々便利だと思い作成

完成して走らせるとエラーが発生した

f:id:ryotank:20220407120840p:plain
カウントダウン式タイマーエラーが発生キャプチャ


その時のコードが以下の通り

import PySimpleGUI as sg
import matplotlib
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.pyplot import axes, figure

def update_figure(data):
    axes = fig.axes
    x = [i[0] for i in data] 
    y = [int(i[1]) for i in data]
    axes[0].plot(x,y, 'r-')
    figure_canvas_agg.draw()
    figure_canvas_agg.get_tk_widget().pack()


table_content = []

layout = [
    [sg.Table(
        headings= ['Observation', 'Result'], 
        values= table_content,
        expand_x=True, hide_vertical_scroll= True,
        key='-TABLE-')],
    [sg.Input(key= '-INPUT-', expand_x = True), sg.Button('Submit')],
    [sg.Canvas(key= '-CANVAS-')]
]

window = sg.Window('グラフアプリ', layout, finalize=True)

#matplotlib
fig = matplotlib.figure.Figure(figsize= (5,4))
fig.add_subplot(111).plot([],[])
figure_canvas_agg= FigureCanvasTkAgg(fig,window['-CANVAS-'].TKCanvas)
figure_canvas_agg.draw()
figure_canvas_agg.get_tk_widget().pack()

while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED:
        break

    if event =='Submit':
        new_value = values['-INPUT-']
        if new_value.isnumeric():
            table_content.append([len(table_content) + 1, float(new_value)])
            window['-TABLE-'].update(table_content)
            window['-INPUT-'].update('')
            update_figure(table_content)

            
window.close()

まずはエラー内容の確認から解決していく

次回はエラー内容の把握する事から