前提・実現したいこと
pysimpleguiを使用してアプリを作成しようとしています。while文でデータを取得して取得したデータをプロットするようにしたいです。プロット自体は出来るのですが最後に一括でされてしまいます。本来はデータを取得したら取得したものをすぐにプロットしてほしいのですがどうしてもできないです。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
python
1# ============================================================================= 2# ライブラリをインポート 3# ============================================================================= 4 5import PySimpleGUI as sg 6import matplotlib.pyplot as plt 7import numpy as np 8from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg 9import sys 10import pyvisa # PyVisa info @ http://PyVisa.readthedocs.io/en/stable/ 11import time 12import scipy 13import glob 14import os 15import threading 16print('OK') 17 18# ============================================================================= 19# テーマの設定 20# ============================================================================= 21 22sg.theme("Dark Blue3") 23#sg.theme("TanBlue") 24size = (10,1) 25font = ("meiryo", 10) 26 27# ================================================================================= 28# GUIがぼやけるのを防ぐ 29# ================================================================================= 30def make_dpi_aware(): 31 import ctypes 32 import platform 33 if int(platform.release()) >= 8: 34 ctypes.windll.shcore.SetProcessDpiAwareness(True) 35make_dpi_aware() 36 37def draw_figure(canvas, figure): 38 fig_cav = FigureCanvasTkAgg(figure, canvas) 39 fig_cav.draw() 40 fig_cav.get_tk_widget().pack(side='top', fill='both', expand=1) 41 return fig_cav 42 43layout = [[sg.Button("実行", font = font, key = "btn"),sg.Canvas(key="CANVAS"),sg.Text(key = "time")] 44] 45 46window = sg.Window("Pulsed-ESR", layout, size = (1500,1000), finalize=True, resizable = True) 47fig = plt.figure(figsize=(10, 10)) 48ax = fig.add_subplot(111) 49ax.set_title("DATA") 50ax.set_xlabel('point') 51ax.set_ylabel('Intensity [a.u.]') 52plt.tight_layout() 53fig_cav = draw_figure(window['CANVAS'].TKCanvas, fig) 54while True: 55 event, value = window.read() 56 if event == None: 57 break 58 # 読込ボタンを押したら 59 if event == 'btn': 60 data=0 61 fn = '5.5395Tre.csv' 62 data=np.loadtxt(fn, delimiter=',') 63 time_axis=data[:,0] 64 cospart=data[:,21:41] 65 sinpart=data[:,42:62] 66 cos_part = np.zeros((2**14-1,20)) 67 sin_part = np.zeros((2**14-1,20)) 68 i = 0 69 while i < 20: 70 71 starttime = time.time() 72 cos_part[:,i] = np.delete(cospart[:,i], 2**14-1, axis = 0) 73 sin_part[:,i] = np.delete(sinpart[:,i], 2**14-1, axis = 0) 74 75 76 #ax.cla() 77 ax.set_title("DATA") 78 ax.set_xlabel('point') 79 ax.set_ylabel('Intensity [a.u.]') 80 ax.plot(cos_part[:,i]+0.15*i,label = "sin_part") 81 ax.plot(sin_part[:,i]-0.15*i,label = "sin_part") 82 fig_cav.draw() 83 84 85 86 87 time.sleep(0.5) 88 i = i + 1 89 print(i) 90window.close()
試したこと
threadを使用しようとしましたがうまく動きませんでした。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/20 04:33
2021/11/21 01:56