def get_poop_description(previous=None): colours = ['πράσινα', 'καφέ', 'κίτρινα', 'μαύρα'] consistencies = ['υγρά', 'στέρεα', 'σποράκια', 'βλέννα', 'αίμα'] attributes = colours + consistencies if previous is None: default_attr = {k: False for k in attributes} else: default_attr = {k: k in previous for k in attributes} win = sg.Window( 'Κακά', layout=( [[sg.CBox(k, default=v, key=k)] for k, v in default_attr.items()] + [[sg.Text('Άλλο:'), sg.Input(key='comment_text')], [sg.Button('OK', key='ok'), sg.Button('Άκυρο', key='cancel')]])) event, values = win.Read() if event == 'ok': desc = values.pop('comment_text', '') if len(desc) > 0: output_list = [desc] + [k for k, v in values.items() if v] else: output_list = [k for k, v in values.items() if v] output_str = ', '.join(output_list) else: output_str = None win.Close() return output_str
def HowDoI(): ''' Make and show a window (PySimpleGUI form) that takes user input and sends to the HowDoI web oracle Excellent example of 2 GUI concepts 1. Output Element that will show text in a scrolled window 2. Non-Window-Closing Buttons - These buttons will cause the form to return with the form's values, but doesn't close the form :return: never returns ''' # ------- Make a new Window ------- # sg.change_look_and_feel('GreenTan') # give our form a spiffy set of colors layout = [ [sg.Text('Ask and your answer will appear here....', size=(40, 1))], [sg.MLineOutput(size_px=(980, 400),key='_OUTPUT_' )], # [ sg.Spin(values=(1, 2, 3, 4), initial_value=1, size=(2, 1), key='Num Answers', font='Helvetica 15'), [ sg.CBox('Display Full Text', key='full text', font='Helvetica 15'), sg.Text('Command History', font='Helvetica 15'), sg.Text('', size=(40,3), text_color=sg.BLUES[0], key='history')], [sg.MLine(size=(85, 5), enter_submits=True, key='query', do_not_clear=False), sg.ReadButton('SEND', button_color=(sg.YELLOWS[0], sg.BLUES[0]), bind_return_key=True), sg.Button('EXIT', button_color=(sg.YELLOWS[0], sg.GREENS[0]))] ] window = sg.Window('How Do I?', layout, default_element_size=(30,1), font=('Helvetica',' 17'), default_button_element_size=(8,2), return_keyboard_events=False) # ---===--- Loop taking in user input and using it to query HowDoI --- # command_history = [] history_offset = 0 while True: event, values = window.Read() # print(event, values) if type(event) is int: event = str(event) if event == 'SEND': query = values['query'].rstrip() window['_OUTPUT_'].update(query, append=True) print(query) QueryHowDoI(query, 1, values['full text'], window) # send the string to HowDoI command_history.append(query) history_offset = len(command_history)-1 # manually clear input because keyboard events blocks clear window['query'].update('') window['history'].update('\n'.join(command_history[-3:])) # if exit button or closed using X elif event == None or event == 'EXIT': break # scroll back in history elif 'Up' in event and len(command_history): command = command_history[history_offset] # decrement is not zero history_offset -= 1 * (history_offset > 0) window['query'].update(command) # scroll forward in history elif 'Down' in event and len(command_history): # increment up to end of list history_offset += 1 * (history_offset < len(command_history)-1) command = command_history[history_offset] window['query'].update(command) # clear currently line elif 'Escape' in event: window['query'].update('') window.close()
sg.Text('PySimpleGUIWeb running on the web and in your browser!', size=(60, 1), font=('Comic sans ms', 20), text_color='red') ], [ sg.Text('This program has been running for... ', size=(30, 1)), sg.Text('', size=(30, 1), key='_DATE_') ], [sg.Text('', size=(30, 1), key='_TEXT_')], [sg.Input('Single Line Input', enable_events=True, size=(30, 1))], # [sg.MultiLine('Multiline Input', size=(40, 4), enable_events=True)], # [sg.MultiLine('Multiline Output', size=(80, 8), # key='_MULTIOUT_', font='Courier 12')], [ sg.CBox('Checkbox 1', enable_events=True, key='_CB1_'), sg.CBox('Checkbox 2', default=True, enable_events=True, key='_CB2_') ], [ sg.Combo(values=['Combo 1', 'Combo 2', 'Combo 3'], default_value='Combo 2', key='_COMBO_', enable_events=True, readonly=False, tooltip='Combo box', disabled=False, size=(12, 1)) ], [sg.Listbox(values=('Listbox 1', 'Listbox 2', 'Listbox 3'), size=(10, 3))], [ sg.Slider((1, 100),