0

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()
Zeor137
  • 165
  • 1
  • 2
  • 11

0 Answers0