def gui_attributes(): optionRace = ["American Indian", "Asian", "Black", "Hispanic", "White"] optionGender = ["Male", "Female", "Other"] # Options inside gui layout = [ [psg.Text("Race"), psg.Combo(optionRace)], [psg.Text("Gender"), psg.Combo(optionGender)], [psg.Text("History knowledge: "), psg.Slider(range=(0, 100), orientation='h', resolution=5, key="HistorySlider", enable_events=True), psg.Text('', key='historyValue')], [psg.Text("Film knowledge: "), psg.Slider(range=(0, 100), orientation='h', resolution=5, key="FilmSlider", enable_events=True), psg.Text('', key='filmValue')], [psg.Text("Sport knowledge: "), psg.Slider(range=(0, 100), orientation='h', resolution=5, key="SportsSlider", enable_events=True), psg.Text('', key='sportsValue')], [psg.Text('Progress: ', key='progressValue')], [psg.Button("Done")] ] window = psg.Window("Attribute Questions", layout) inputs = [] add = 0 event, values = window.read() values['HistorySlider'] = 0 values['FilmSlider'] = 0 values['SportsSlider'] = 0 while True: event, values = window.read() window['historyValue'].Update(value=values['HistorySlider']) window['filmValue'].Update(value=values['FilmSlider']) window['sportsValue'].Update(value=values['SportsSlider']) add = int(values["HistorySlider"]) + int(values["FilmSlider"]) + int(values["SportsSlider"]) window['progressValue'].Update(value=("Total: " + str(add) + "%")) if event in (None, "Done"): # only activates once done or exit is pressed if add == 100: for i in values: inputs.append(values[i]) break window.close() return inputs
def main(): layout = [[sg.Text('This is a text element')], [ sg.Input() ], [ sg.Combo(['Combo 1']) ], [sg.Text('If you close the browser tab, the app will exit gracefully')], [sg.InputText('Source')], [sg.InputText('Dest')], [sg.Ok(), sg.Cancel()]] window = sg.Window('Demo window..', layout) i = 0 while True: event, values = window.read(timeout=1) if event != sg.TIMEOUT_KEY: print(event, values) if event is None: break i += 1 window.close()
def __init__(self): # initialize controller parameters (in dict) self.params = self.initialize_params() # FIWARE parameters self.cb_url = os.getenv("CB_URL", "http://localhost:1026") self.entity_id = None # will be read on the web GUI self.entity_type = "PID_Controller" self.service = os.getenv("FIWARE_SERVICE", '') self.service_path = os.getenv("FIWARE_SERVICE_PATH", '') # Create the fiware header fiware_header = FiwareHeader(service=self.service, service_path=self.service_path) # Create orion context broker client self.ORION_CB = ContextBrokerClient(url=self.cb_url, fiware_header=fiware_header) # initial pid controller list self.controller_list = [] try: self.refresh_list() except: pass # initialize gui window sg.theme("DarkBlue") pid_id_bar = [[ sg.Text("Controller ID", size=(10, 1)), sg.Combo(self.controller_list, key="controller_list"), sg.Button("Refresh") ]] param_bars = [[ sg.Text(param.capitalize(), size=(10, 1)), sg.InputText(self.params[param], key=param) ] for param in self.params.keys()] io_bars = [[sg.Button("Send"), sg.Button("Read")]] layout = pid_id_bar + param_bars + io_bars self.window = sg.Window("PID controller", layout, web_port=80, web_start_browser=True)
def create_settings_window(settings): sg.theme(settings['theme']) def TextLabel(text): return sg.Text(text + ':', justification='r', size=(15, 1)) layout = [[sg.Text('Settings', font='Any 15')], [ TextLabel('Theme'), sg.Combo(sg.theme_list(), size=(20, 20), key='-THEME-') ], [sg.Button('Save'), sg.Button('Exit')]] window = sg.Window('Settings', layout, keep_on_top=True, finalize=True) for key in SETTINGS_KEYS_TO_ELEMENT_KEYS: # update window with the values read from settings file try: window[SETTINGS_KEYS_TO_ELEMENT_KEYS[key]].update( value=settings[key]) except Exception as e: print( f'Problem updating PySimpleGUI window from settings. Key = {key}' ) return window
import datetime DEFAULT_BASE64_ICON = b'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' sg.ChangeLookAndFeel('GreenTan') layout = [ [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', do_not_clear=True, enable_events=True, size=(30,1))], [sg.Multiline('Multiline Input', do_not_clear=True, size=(40,4), enable_events=True)], [sg.Multiline('Multiline Output', size=(80,8), key='_MULTIOUT_', font='Courier 12')], [sg.Checkbox('Checkbox 1', enable_events=True, key='_CB1_'), sg.Checkbox('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), default_value=80, key='_SLIDER_', visible=True, enable_events=True, orientation='h')], [sg.Spin(values=(1,2,3),initial_value=2, size=(4,1))], [sg.Image(filename=r'dot:logo.jpg')], [sg.OK(), sg.Button('Exit', button_color=('white', 'red'))] ] window = sg.Window('My PySimpleGUIWeb Window', default_element_size=(30,1), font='Helvetica 18', background_image=r'dot:logo.jpg' ).Layout(layout) start_time = datetime.datetime.now() while True:
HEIGHT = 7 #lines #Credit to aminusfu : https://github.com/cherrypy/cherrypy/blob/0857fa81eb0ab647c7b59a019338bab057f7748b/cherrypy/process/wspbus.py#L305 startup_cwd = os.getcwd() #Used in do_execv, to swap between projects #------------- Context Manager ------------# try: #If started from COMMAND, user can choose his directory directly SELECTED_DIR = sys.argv[1] except IndexError: SELECTED_DIR = '' #If no system argument is provided, provide GUI to choose if SELECTED_DIR == '': prompt_layout = [ [sg.Combo(PROJECTS)], [sg.Button('Open')], [sg.Text(key='-INFO-', size=(20, 1))], ] prompt_window = sg.Window( 'Select your project', prompt_layout, location=(80, 500), ) while True: event, values = prompt_window.Read() if event in (None, 'Exit'): break if event == 'Open':
# import PySimpleGUI as sg import PySimpleGUIWeb as sg import loadMap v = [['名称','电量','状态','位置','订单目标点'], ['Vehicle-01', '80', '等待', 'B', '无'], ['Vehicle-02', '60', '等待', 'L3', '无']] vv = [['订单ID', '目标点', '动作', '执行状态'], ['1', 'L3', '载货', '执行完成'], ['2', 'L2', '卸货', '执行中'], ['3', 'L3', '载货', '未分配'], ['5', 'L2', '载货', '未分配']] vvv = [['订单ID', '目标点', '动作'], ['38', 'L9', '载货'], ['38', 'L9', '载货']] layout = [ [sg.Text('车辆状态:', size=(10, 1), font=('Comix san ms', 16), text_color='black')], [sg.Table(values=v, col_widths=[4, 4, 4, 4, 10], auto_size_columns=0, num_rows=4, display_row_numbers=0, justification='center', text_color='black')], [sg.Text('订单状态:', size=(10, 1), font=('Comix san ms', 16), text_color='black')], [sg.Table(values=vv, col_widths=[6, 6, 4, 8], auto_size_columns=0, select_mode=sg.TABLE_SELECT_MODE_BROWSE, num_rows=2, display_row_numbers=False, justification='center', text_color='black')], [sg.Button('取消订单'), sg.Button('暂停订单'), sg.Button('继续订单')], [sg.Text('新建订单:', size=(10, 1), font=('Comix san ms', 16), text_color='black')], [sg.Text('目标点', size=(6,1)), sg.Combo(['L1', 'L2', 'L3'], size=(6, 1), auto_size_text=False), sg.Text('动作: '), sg.Combo(['无', '载货', '卸货', '充电'], size=(7, 1)), sg.Button('添加')], [sg.Table(values=vvv, col_widths=[5, 6, 4], auto_size_columns=0, num_rows=4, display_row_numbers=0, justification='center', text_color='black')], [sg.Button('取消订单',button_color=('red')), sg.Button('下单', button_color=('green'))] ] def app(): window = sg.Window('OpenTCS Web Client', layout, web_ip='0.0.0.0', web_port=8089) while True: event, values = window.read(timeout=1) if __name__ == "__main__": map = loadMap.ModelMap() print(map.PointDic) app()
# print(points_pose) graph_elem = sg.Graph((400, 200), (-10, -20), (390, 180), enable_events=True, key='_GRAPH_', background_color='lightblue') vehicle_graph = None vehicle_path_graph = None vehicle_current_order = None layout = [ [graph_elem], [sg.Text('车辆状态:', size=(10, 1), font=('Comix san ms', 16), text_color='black')], [sg.Table(values=v, col_widths=[4, 4, 4, 4, 10], auto_size_columns=0, num_rows=4, display_row_numbers=0, justification='center', text_color='black')], [sg.Text('订单状态:', size=(10, 1), font=('Comix san ms', 16), text_color='black')], [sg.Table(values=vv, col_widths=[6, 6, 4, 8], auto_size_columns=0, select_mode=sg.TABLE_SELECT_MODE_BROWSE, num_rows=2, display_row_numbers=False, justification='center', text_color='black')], [sg.Button('取消订单'), sg.Button('暂停订单'), sg.Button('继续订单')], [sg.Text('新建订单:', size=(10, 1), font=('Comix san ms', 16), text_color='black')], [sg.Text('目标点', size=(6,1)), sg.Combo(xxx, size=(6, 1), auto_size_text=False, enable_events=True, key='Target'), sg.Text('动作: '), sg.Combo(['无', '载货', '卸货', '充电'], size=(7, 1), enable_events=True, key='action'), sg.Button('添加')], [sg.Table(values=vvv, col_widths=[5, 6, 4], auto_size_columns=0, num_rows=4, display_row_numbers=0, justification='center', text_color='black', key='transport')], [sg.Button('取消订单',button_color=('red')), sg.Button('下单', button_color=('green'))] ] def app(): # global vvv # print(xxx) global vehicle_graph global vehicle_path_graph global vehicle_current_order window = sg.Window('OpenTCS Web Client', layout, web_ip='0.0.0.0', web_port=8089, finalize=True) window.Finalize()
window.Refresh() port, interval, wave, exportoption = readConfig() connected = getAvailable() # The GUI layout layout = [[ sg.Text('VSCapture Web Interface', size=(120, 4), font=('Helvetica', 24)) ], [ sg.Combo( values=connected, default_value=port, key='_PORT_', enable_events=True, readonly=False, tooltip='Select port that is connected to the anaesthetic machine', disabled=False, size=(30, 1)), sg.Text('Port', size=(60, 1), font=('Helvetica', 16)) ], [ sg.Combo( values=list(INTERVALS.keys()), default_value=interval, key='_INTERVAL_', enable_events=True, readonly=False, tooltip='How frequently do you want to log the data?', disabled=False, size=(30, 1)),