So I have a pysimpleGUI window to set some experiments parameters and when you press a button it's supposed supposed to graph the experiment in a matplotlib window alongside the main window. But the matplotlib window is all black while the main window is open. I was thinking of running both on different threads because they are probably conflicting on some resource. Am I on the right track?
import PySimpleGUI as sg
import sys
import configparser
import threading
import One_Tone as ot
#sg.theme('DarkAmber')
sg.theme('Dark Blue 3')
# conteudo da janela (aqui tambem se altera as chaves do dictionary)
layout = [
#experiment data
[sg.Text('Frequency sweep range'), sg.InputText(key="freq_range"), sg.Text('Hz')],
[sg.Text('Frequency sweep samples'), sg.InputText(key="freq_samples")],
[sg.Text('Amplitude for frequency only sweep'), sg.InputText(key="ampl"), sg.Text('Hz')],
[sg.Text('Amplitude sweep range'), sg.InputText(key="amp_range"), sg.Text('Hz')],
[sg.Text('Amplitude sweep samples'), sg.InputText(key="amp_samples")],
[sg.Text('Duration of each frequency'), sg.InputText(key="freq_time"), sg.Text('s')],
#area responsible for saving and loading files
[sg.Text('Load file'), sg.InputText(key="load"), sg.FileBrowse(), sg.Button('Load')],
[sg.Text('Save File'), sg.InputText(key="save"), sg.FileSaveAs(), sg.Button('Save')],
[sg.Button('New Window') , sg.Button('Frequency sweep'), sg.Button('Double Sweep')],
[sg.Button('Ok') , sg.Button('Close')] ]
#initializes config object
config = configparser.ConfigParser()
#initializes experiment object
exp = ot.One_tone()
#initializes window
window = sg.Window('Dados do experimento', layout)
while True:
event, values = window.read()
if event in (None, 'Close'):# Ends execution
window.close()
sys.exit()
elif (event == 'Load'): #
config.read('save.ini')
ler =config["One_Tone"]
for keys in ler:#changes each window input with data from file
window[keys](ler[keys])
elif (event == 'Save'): #
del values["Browse"] #remove cells not important to save in the file
del values["Save As..."]
del values["save"]
del values["load"]
config['One_Tone']=values
with open('save.ini', 'w') as configfile:
config.write(configfile)
elif (event == 'New Window'):
#loads a new graph canvas
exp.graph_window()
elif (event == 'Frequency Sweep'):
#passes data from window to experiment
#converts string from window to list
exp.freq_range=values["freq_range"].strip('][').split(', ')
exp.freq_samples=values["freq_samples"]
exp.freq_time=values["freq_time"]
exp.ampl=values["ampl"]
exp.run()
#thread = threading.Thread(target=exp.run, args=(1,))
elif (event == 'Double Sweep'):
#passes data from window to experiment
exp.freq_range=values["freq_range"].strip('][').split(', ')
exp.freq_samples=values["freq_samples"]
exp.freq_time=values["freq_time"]
exp.ampl=values["ampl"]
exp.amp_range=values["amp_range"].strip('][').split(', ')
exp.amp_samples=values["amp_samples"]
#new window and runs
exp.graph_window()
exp.double_sweep()
elif (event == 'Ok'): #
del values["Browse"] #
del values["Save As..."]
del values["save"]
del values["load"]
saida=values
break
window.close()
input()