Jan-10-2021, 11:22 AM
(Jan-09-2021, 10:27 PM)Serafim Wrote: As you use windows and not popups you have to catch signals from all windows.
Your code works with minor changes (I changed the "rc= reverseComplement(seq)" as I don't know what it does)
import PySimpleGUI as sg sg.theme('DarkAmber') layout = [[sg.Text('Reverse complement:', size=(15,1), key='-OUTPUT-')], [sg.Input(key='-IN-')], [sg.Button('Convert'), sg.Button('Exit'), sg.Button('Help')]] window= sg.Window('Reverse Complement Converter', layout, finalize = True) window_help = None while True: win, event, values = sg.read_all_windows() # Read all signals from all windows if event in (sg.WIN_CLOSED, 'Exit', 'Cancel'): if win == window: break elif window_help and win == window_help: window_help.close() window_help = None elif event == 'Convert': seq=values['-IN-'] rc= "YES!" #reverseComplement(seq) window['-OUTPUT-'].update(rc) elif event == "Help": layout_help = [[sg.Text("This program requires a DNA sequence as an input and returns the reverse complement")],[sg.Button("Cancel")]] window_help = sg.Window("Help", layout_help, finalize = True) window.close()
Thanks for your reply Serafim. Indeed, with your changes I can open and close the help window. Thank you! FYI: reverseComplement is a custom function which processes a string and outputs a string.
I have a few questions though:
1) In line 19 of your code, why did you write
elif window_help and win == window_help:and not just
elif win == window_help? I removed the "window_help" in this statement, and the GUI appears to work fine.
2)In the same elif statement as question 1. Why did you add
window_help=None(line 21). Again, if I delete this line, it seems to work fine.
3)When I click the "Convert" button, the string processed by the reverseComplement function (i.e. "rc" value), should appear to the right of "Reverse complement:" as it is the "key" of this Text. This happend in my initial script. However, when I now press "Convert", the "rc" value replaces the "Reverse complement:" string. Any idea why this happens and how I could fix this? When I look at the code, I fail to understand why it replaces the whole string.
Thanks!