Beispiel #1
0
import PySimpleGUI as psg

data = list("abcdefg")
# ["a", "b", "c", "d", "e", "f", "g"]

frame = [[psg.Combo(values=data, size=(10, 4), default_value=data[2])],
         [psg.HorizontalSeparator()],
         [psg.CB("체크박스1"),
          psg.VerticalSeparator(),
          psg.CB("체크박스2")]]

layout = [[psg.Frame("프레임 테스트", frame)], [psg.Ok(), psg.Cancel()]]

window = psg.Window("Checkbox 테스트", layout)

event, values = window.read()
window.close()
print(event, values)
                key="TEXT_COMBINE",
                visible=False)
        ],
                   [
                       sg.MLine(size=(120, 12),
                                key="RESULT_COMBINE",
                                font="Consolas 10",
                                visible=False)
                   ]])
    ]
]

column_stakes = [
    [sg.Text("Site"), sg.Text("Mises")],
    [
        sg.Combo(sites, key="SITE_STAKES_0"),
        sg.Input(key="STAKE_STAKES_0", size=(6, 1))
    ], *([
        sg.Combo(sites, key="SITE_STAKES_" + str(i), visible=False),
        sg.Input(key="STAKE_STAKES_" + str(i), size=(6, 1), visible=False)
    ] for i in range(1, 9)),
    [
        sg.Button("Retirer mise", key="REMOVE_STAKES"),
        sg.Button("Ajouter mise", key="ADD_STAKES")
    ]
]

visible_stakes = 1
column_indicators_stakes = [[
    sg.Text("", size=(15, 1), key="INDICATORS_STAKES" + str(_), visible=False)
] for _ in range(5)]
Beispiel #3
0
    def Iniciar(self):
        self.produtos = self._venda.mostrarLista()
        self.totalSomado = '0,00'
        self.selecionado = []
        headings = [
            'COD.', 'NOME PROD.', 'VALOR UNI.', 'QUANTIDADE', 'VALOR TOTAL'
        ]
        self.dados = []
        table = [[
            sg.Table(values=self.dados,
                     headings=headings,
                     def_col_width=23,
                     auto_size_columns=False,
                     max_col_width=23,
                     justification="right",
                     alternating_row_color='#DFB2F4',
                     header_font=('Helvetica', 11),
                     vertical_scroll_only=True,
                     hide_vertical_scroll=False,
                     size=(60, 15),
                     enable_events=True,
                     key='Table',
                     visible=True)
        ]]
        valorTotal = [[sg.Text('', size=(1, 1))],
                      [
                          sg.Text('', size=(30, 1)),
                          sg.Text('TOTAL:',
                                  size=(18, 1),
                                  font=('Helvetica', 18)),
                          sg.Text('  R$  ' + self.totalSomado,
                                  size=(15, 1),
                                  font=('Helvetica', 35, 'bold'),
                                  background_color='#343434',
                                  text_color='#FFFFFF',
                                  key='Soma')
                      ]]
        layout = [
            [
                sg.Text('', size=(30, 1)),
                sg.Text('\n ADICIONAR ITENS DA LISTA \n',
                        size=(60, 3),
                        justification='center',
                        background_color='#000000',
                        text_color='#FFFFFF'),
                sg.Text('', size=(30, 1))
            ],
            [sg.Text('', size=(1, 0))],
            [
                sg.Text('Selecione o Item: ', size=(30, 0)),
                sg.Combo(self.produtos, size=(67, 0), key='Produtos'),
                sg.Text('', size=(12, 0)),
                sg.Text('Quantidade: ', size=(10, 0)),
                sg.InputText('1', size=(8, 0), key='Quantidade')
            ],
            [sg.Text('', size=(1, 0))],
            [
                sg.Text('', size=(30, 0)),
                sg.Text('Valor Un.:', size=(8, 0)),
                sg.Text('R$ 0,00',
                        size=(18, 0),
                        font=('Helvetica', 15),
                        justification='center',
                        key='ValorUn'),
                sg.Text('Valor Total.:', size=(10, 0)),
                sg.Text('R$ 0,00',
                        size=(18, 0),
                        font=('Helvetica', 15),
                        justification='center',
                        key='ValorTotal')
            ],
            [sg.Text('', size=(1, 0))],
            [
                sg.Text('', size=(12, 2)),
                sg.Button('Add Item',
                          size=(20, 2),
                          font=('Helvetica', 12),
                          key='Add',
                          button_color=('Black', 'SeaGreen2'),
                          border_width=0),
                sg.Button('Cancelar Item',
                          size=(20, 2),
                          font=('Helvetica', 12),
                          key='Cancelar',
                          button_color=('White', 'Red'),
                          border_width=0),
                sg.Button('Finalizar Pedido',
                          size=(20, 2),
                          font=('Helvetica', 12),
                          key='Finalizar',
                          border_width=0),
                sg.Button('Sair',
                          size=(20, 2),
                          font=('Helvetica', 12),
                          key='Sair',
                          button_color=('White', 'FireBrick4'),
                          border_width=0),
                sg.Text('', size=(12, 2))
            ],
            [sg.Text('', size=(1, 0))],
        ] + table + valorTotal

        self.janela = sg.Window("PROGRAMA DE VENDA ONLINE",
                                size=(1080, 680)).layout(layout)

        while True:
            self.event, self.values = self.janela.Read(timeout=100)

            if self.values['Quantidade'] == "":
                self.values['Quantidade'] = 1

            elif self.values['Quantidade'].isdigit() == False:
                sg.popup_ok('Digite uma quantidade válida!', title="Alerta!")
                self.janela.FindElement("Quantidade").Update(1)
                self.values['Quantidade'] = 1

            if self.event is None or self.event == "Sair":
                self._venda.sairBanco()
                break
            if self.values['Produtos'] != "":
                valores = self._venda.mostrarValores(self.values['Produtos'])
                self.janela.FindElement("ValorUn").Update(
                    'R$ ' + self.dinheiroFormat(valores[2]))

                if self.values['Quantidade'] == '1' or self.values[
                        'Quantidade'] == '':
                    self.janela.FindElement("ValorTotal").Update(
                        'R$ ' + self.dinheiroFormat(valores[2]))
                    self.selecionado = [
                        valores[0], self.values['Produtos'],
                        self.dinheiroFormat(valores[2]), 1,
                        self.dinheiroFormat(valores[2])
                    ]
                else:
                    self.janela.FindElement("ValorTotal").Update(
                        'R$ ' +
                        self.dinheiroFormat(valores[2] *
                                            int(self.values['Quantidade'])))
                    self.selecionado = [
                        valores[0], self.values['Produtos'],
                        self.dinheiroFormat(valores[2]),
                        int(self.values['Quantidade']),
                        self.dinheiroFormat(valores[2] *
                                            int(self.values['Quantidade']))
                    ]

            if self.event == 'Add':

                if len(self.selecionado) == 0:
                    sg.popup_ok('Você deve selecionar ao menos 1 produto!',
                                title="Alerta!")
                else:
                    self.dados.append(self.selecionado)
                    val = self._venda.totalCompra(self.dados)
                    self.totalSomado = self.dinheiroFormat(str(val))
                    self.janela.FindElement("Table").Update(self.dados)
                    self.janela.FindElement("Soma").Update('  R$  ' +
                                                           self.totalSomado)

            if self.event == 'Cancelar':
                if self.values['Table'] != []:
                    self.dados.pop(self.values['Table'][0])
                    self.janela.FindElement("Table").Update(self.dados)
                else:
                    sg.popup_ok(
                        'Você deve selecionar ao menos 1 produto na tabela para excluir!',
                        title="Alerta!",
                    )

            if self.event == 'Finalizar':

                if len(self.dados) != 0:
                    # 0 - Cancela Compra, 1 - Pagou em Dinheiro, 2 - Pagou em Cartão, 3 - Acrescentar Item
                    result = self.telaFormasDePagamento()
                    if result == 0:
                        self.reset()
                    elif result == 3:
                        pass
                    else:
                        # Colocar a atualização do pagamento
                        setPagamento = self.telaPagamento(self.dados, result)

                        if type(setPagamento) == float:
                            idPedido = self._venda.comprar(
                                self.dados, result, setPagamento)
                            if idPedido != 0:
                                endereco = self.telaEndereco(idPedido)
                                if endereco != 0:
                                    tipoPagamento = result
                                    dadosVenda = [
                                        idPedido[0], setPagamento,
                                        tipoPagamento
                                    ]
                                    venda = self._venda.registrarVenda(
                                        dadosVenda)
                                    if venda > 0:
                                        status = self.telaRegistroDeVenda(
                                            venda)
                                        if status == True:
                                            self.reset()
                                        else:
                                            self._venda.sairBanco()
                                            break

                                    else:
                                        sg.popup_ok(
                                            'Deu algo errado ao finalizar o pedido, tente novamente ou entre em contato com o desenvolvedor!',
                                            title="Alerta!",
                                        )
                                        self.reset()
                                else:
                                    self.reset()
                            else:
                                sg.popup_ok(
                                    'Deu algo errado ao finalizar o pedido, tente novamente ou entre em contato com o desenvolvedor!',
                                    title="Alerta!",
                                )
                        else:
                            sg.popup_ok(
                                'Ocorreu um erro desconhecido, tente novamente ou entre em contato com o desenvolvedor!',
                                title="Alerta!")

                else:
                    sg.popup_ok(
                        'Você deve registrar ao menos 1 item para finalizar o pedido!',
                        title="Alerta!")
Beispiel #4
0
        ['Bloomberg Code', 'Beta Relative To', 'Information Ratio'],
    'Long-Short Equity': 
        ['HFRIEHI Index', 'U.S. Equity', 0.30],
    'Global Macro': 
        ['HFRIMI Index', 'U.S. Equity', 0.30],
    }

# %%
sg.SetOptions(element_padding=(1, 1))
bw = {'size': (20,1)}

# %%
# Building Blocks Tab
build_layout = [[sg.T('', **bw)],
              [sg.T('As of Date', **bw), 
               sg.Combo(values=as_of_date, **bw, key='as_of_date'),
               sg.T('Currency', **bw), 
               sg.Combo(values=currencies, default_value='USD', **bw, key='currency'),
               sg.T('Lambda', **bw),
               sg.Combo(values=[float(f'{i:.2f}') for i in list(np.arange(0, 1.01, 0.01))], default_value=0.99, **bw, key='lambda_val')],
              [sg.T('_'*190)],

              [sg.T('', **bw), 
               sg.T('US', **bw), 
               sg.T('Global', **bw),
               sg.T('Global Ex-US', **bw),
               sg.T('Emerging', **bw),
               sg.T('Country-Specific', **bw)],          
              [sg.T('Inflation (%)', **bw), 
               sg.Combo(values=value_range, default_value=2.2, **bw, key='us_inflation'),
               sg.Combo(values=value_range, default_value=1.8, **bw, key='gl_inflation'),
Beispiel #5
0
def newAlarm():
    '''Opens window to create a new alarm, and select days in which alarm plays.'''

    layout = [
        [
            sg.Combo(hourList, size=(3, 1), key="-Hour-", default_value='12'),
            sg.Text(":"),
            sg.Combo(minuteList,
                     size=(3, 1),
                     enable_events=True,
                     key="-Minute-",
                     default_value='01'),
            sg.Combo(periodList,
                     size=(3, 2),
                     enable_events=True,
                     key='-Period-',
                     default_value='PM'),
        ],
        [
            sg.Listbox(dayList,
                       key='-DaySelect-',
                       size=(25, 8),
                       select_mode='multiple'),
        ],
        [
            sg.Submit(),
            sg.Exit(),
        ],
    ]

    window = sg.Window("New Alarm", layout, finalize=True)

    for i in [window['-Hour-'], window['-Minute-'],
              window['-Period-']]:  #Bind window elements in list to <Enter>
        i.bind('<Enter>',
               'Enter-')  #creating `i=Enter-` event, causing the associated
        #combo box to drop down automatically on mouse over
    while True:
        event, values = window.read()

        if event in ['Exit', sg.WIN_CLOSED]:
            break

        elif event == '-Hour-Enter-':
            window['-Hour-'].Widget.event_generate('<Button-1>')

        elif event == '-Minute-Enter-':
            window['-Minute-'].Widget.event_generate('<Button-1>')

        elif event == '-Period-Enter-':
            window['-Period-'].Widget.event_generate('<Button-1>')

        elif event == 'Submit':
            daysOn = [
                idx for idx, i in enumerate(dayList)
                if i in values['-DaySelect-']
            ]  #Maps days selected in `-DaySelect-` to ints

            clocks.append(
                Clock(values['-Hour-'], values['-Minute-'], values['-Period-'],
                      daysOn))  #create a new
            #instance of the `Clock` class
            break

    window.close()
Beispiel #6
0
    def run(self, action):
        if action is not "gui":
            self.perform_command_line(action)
            return

        sg.theme('DarkAmber')

        star_tab_layout = [[sg.T('Plotting expected star color\n')],
                           [
                               sg.Text('Select star type:'),
                               sg.Combo(
                                   available_templates,
                                   key='star_type',
                                   default_value=self.used_config['star_type'])
                           ],
                           [
                               sg.Text('Saturation:'),
                               sg.Input(key='saturation',
                                        default_text='1.0',
                                        size=(10, ))
                           ], [sg.Button('Check star color')]]

        emission_tab_layout = [[
            sg.T('Plotting expected emission lines color\n')
        ], [sg.Text('Select emission lines:')],
                               [
                                   sg.Combo(available_emission_lines,
                                            key='emission_line_1',
                                            default_value='H alpha'),
                                   sg.Text('Strength: '),
                                   sg.Input(key='emission_line_1_strength',
                                            default_text='1.0',
                                            size=(10, ))
                               ],
                               [
                                   sg.Combo(available_emission_lines,
                                            key='emission_line_2',
                                            default_value='OIII'),
                                   sg.Text('Strength: '),
                                   sg.Input(key='emission_line_2_strength',
                                            default_text='1.0',
                                            size=(10, ))
                               ],
                               [
                                   sg.Combo(available_emission_lines,
                                            key='emission_line_3',
                                            default_value='SII'),
                                   sg.Text('Strength: '),
                                   sg.Input(key='emission_line_3_strength',
                                            default_text='1.0',
                                            size=(10, ))
                               ], [sg.Button('Check lines combined color')]]

        layout = [[
            sg.Text('Select camera:'),
            sg.Combo(available_cameras,
                     key='camera',
                     default_value=self.used_config['camera']),
        ],
                  [
                      sg.Text('Select master filter (for all channels):'),
                      sg.Combo(available_filters,
                               key='filter_L',
                               default_value=self.used_config['filter_L']),
                  ],
                  [
                      sg.Text('Select filter for R channel:'),
                      sg.Combo(available_filters,
                               key='filter_R',
                               default_value=self.used_config['filter_R']),
                      sg.Text('Multiplier:'),
                      sg.Input(key='red_x', default_text='1.0', size=(10, )),
                  ],
                  [
                      sg.Text('Select filter for G channel:'),
                      sg.Combo(available_filters,
                               key='filter_G',
                               default_value=self.used_config['filter_G']),
                      sg.Text('Multiplier:'),
                      sg.Input(key='green_x', default_text='1.0', size=(10, )),
                  ],
                  [
                      sg.Text('Select filter for B channel:'),
                      sg.Combo(available_filters,
                               key='filter_B',
                               default_value=self.used_config['filter_B']),
                      sg.Text('Multiplier:'),
                      sg.Input(key='blue_x', default_text='1.0', size=(10, )),
                  ],
                  [
                      sg.TabGroup([[
                          sg.Tab('Stars', star_tab_layout),
                          sg.Tab('Emission lines', emission_tab_layout)
                      ]])
                  ], [sg.Button('Plot responses')],
                  [sg.Canvas(key='-CANVAS-')], [sg.Button('Exit')]]

        self.window = sg.Window('Choose configuration', layout)
        while True:
            event, values = self.window.read()
            if event is None:
                break
            if event is 'Exit':
                exit(0)

            if event is 'Check star color':
                config = validate_config(values)
                print('You entered ', config)
                self.get_responses(config)
                self.plot_star(self.get_rgb_color(config), config)
                self.fig.savefig("_current_star_.png")
                self.draw_figure(self.window['-CANVAS-'].TKCanvas)

            if event is 'Plot responses':
                config = validate_config(values)
                self.get_responses(config)
                self.window['-CANVAS-'].TKCanvas.delete("ALL")
                self.plot_responses(config)
                self.fig.savefig("_current_responses_.png")
                self.draw_figure(self.window['-CANVAS-'].TKCanvas)

        self.window.close()
def make_window():
    """
    Creates the main window
    :return: The main window object
    :rtype: (sg.Window)
    """
    theme = get_theme()
    if not theme:
        theme = sg.OFFICIAL_PYSIMPLEGUI_THEME
    sg.theme(theme)
    # First the window layout...2 columns

    find_tooltip = "Find in file\nEnter a string in box to search for string inside of the files.\nFile list will update with list of files string found inside."
    filter_tooltip = "Filter files\nEnter a string in box to narrow down the list of files.\nFile list will update with list of files with string in filename."
    find_re_tooltip = "Find in file using Regular Expression\nEnter a string in box to search for string inside of the files.\nSearch is performed after clicking the FindRE button."

    left_col = sg.Column([
        [
            sg.Listbox(values=get_file_list(),
                       select_mode=sg.SELECT_MODE_EXTENDED,
                       size=(50, 20),
                       bind_return_key=True,
                       key='-DEMO LIST-')
        ],
        [
            sg.Text('Filter (F1):', tooltip=filter_tooltip),
            sg.Input(size=(25, 1),
                     focus=True,
                     enable_events=True,
                     key='-FILTER-',
                     tooltip=filter_tooltip),
            sg.T(size=(15, 1), k='-FILTER NUMBER-')
        ],
        [
            sg.Button('Run'),
            sg.B('Edit'),
            sg.B('Clear'),
            sg.B('Open Folder'),
            sg.B('Copy Path')
        ],
        [
            sg.Text('Find (F2):', tooltip=find_tooltip),
            sg.Input(size=(25, 1),
                     enable_events=True,
                     key='-FIND-',
                     tooltip=find_tooltip),
            sg.T(size=(15, 1), k='-FIND NUMBER-')
        ],
    ],
                         element_justification='l',
                         expand_x=True,
                         expand_y=True)

    lef_col_find_re = sg.pin(
        sg.Col([[
            sg.Text('Find (F3):', tooltip=find_re_tooltip),
            sg.Input(size=(25, 1), key='-FIND RE-', tooltip=find_re_tooltip),
            sg.B('Find RE')
        ]],
               k='-RE COL-'))

    right_col = [
        [
            sg.Multiline(size=(70, 21),
                         write_only=True,
                         key=ML_KEY,
                         reroute_stdout=True,
                         echo_stdout_stderr=True,
                         reroute_cprint=True)
        ],
        [sg.B('Settings'), sg.Button('Exit')],
        [sg.T('Demo Browser Ver ' + __version__)],
        [
            sg.T('PySimpleGUI ver ' + sg.version.split(' ')[0] +
                 '  tkinter ver ' + sg.tclversion_detailed,
                 font='Default 8',
                 pad=(0, 0))
        ],
        [sg.T('Python ver ' + sys.version, font='Default 8', pad=(0, 0))],
        [
            sg.T('Interpreter ' + sg.execute_py_get_interpreter(),
                 font='Default 8',
                 pad=(0, 0))
        ],
    ]

    options_at_bottom = sg.pin(sg.Column([[
        sg.CB('Verbose',
              enable_events=True,
              k='-VERBOSE-',
              tooltip='Enable to see the matches in the right hand column'),
        sg.CB('Show only first match in file',
              default=True,
              enable_events=True,
              k='-FIRST MATCH ONLY-',
              tooltip='Disable to see ALL matches found in files'),
        sg.CB('Find ignore case',
              default=True,
              enable_events=True,
              k='-IGNORE CASE-'),
        sg.CB('Wait for Runs to Complete',
              default=False,
              enable_events=True,
              k='-WAIT-')
    ]],
                                         pad=(0, 0),
                                         k='-OPTIONS BOTTOM-',
                                         expand_x=True,
                                         expand_y=False),
                               expand_x=True,
                               expand_y=False)

    choose_folder_at_top = sg.pin(
        sg.Column([[
            sg.
            T('Click settings to set top of your tree or choose a previously chosen folder'
              ),
            sg.Combo(sorted(sg.user_settings_get_entry('-folder names-', [])),
                     default_value=sg.user_settings_get_entry(
                         '-demos folder-', ''),
                     size=(50, 30),
                     key='-FOLDERNAME-',
                     enable_events=True,
                     readonly=True)
        ]],
                  pad=(0, 0),
                  k='-FOLDER CHOOSE-'))
    # ----- Full layout -----

    layout = [
        [sg.Text('PySimpleGUI Demo Program & Project Browser', font='Any 20')],
        [choose_folder_at_top],
        # [sg.Column([[left_col],[ lef_col_find_re]], element_justification='l',  expand_x=True, expand_y=True), sg.Column(right_col, element_justification='c', expand_x=True, expand_y=True)],
        [
            sg.Pane([
                sg.Column([[left_col], [lef_col_find_re]],
                          element_justification='l',
                          expand_x=True,
                          expand_y=True),
                sg.Column(right_col,
                          element_justification='c',
                          expand_x=True,
                          expand_y=True)
            ],
                    orientation='h',
                    relief=sg.RELIEF_SUNKEN,
                    k='-PANE-')
        ],
        [options_at_bottom]
    ]

    # --------------------------------- Create Window ---------------------------------
    window = sg.Window('PSG Demo & Project Browser',
                       layout,
                       finalize=True,
                       resizable=True,
                       use_default_focus=False,
                       right_click_menu=sg.MENU_RIGHT_CLICK_EDITME_VER_EXIT)
    window.set_min_size(window.size)

    window['-DEMO LIST-'].expand(True, True, True)
    window[ML_KEY].expand(True, True, True)
    window['-PANE-'].expand(True, True, True)

    window.bind('<F1>', '-FOCUS FILTER-')
    window.bind('<F2>', '-FOCUS FIND-')
    window.bind('<F3>', '-FOCUS RE FIND-')
    if not advanced_mode():
        window['-FOLDER CHOOSE-'].update(visible=False)
        window['-RE COL-'].update(visible=False)
        window['-OPTIONS BOTTOM-'].update(visible=False)

    # sg.cprint_set_output_destination(window, ML_KEY)
    window.bring_to_front()
    return window
# -----------------------------------------------------------------------------
sg.LOOK_AND_FEEL_TABLE['Marocha'] = {'BACKGROUND': '#709053',
                                     'TEXT': '#fff4c9',
                                     'INPUT': '#c7e78b',
                                     'TEXT_INPUT': '#000000',
                                     'SCROLL': '#c7e78b',
                                     'BUTTON': ('white', '#709053'),
                                     'PROGRESS': ('#01826B', '#D0D0D0'),
                                     'BORDER': 1, 'SLIDER_DEPTH': 0, 'PROGRESS_DEPTH': 0,
                                     }

sg.theme(theme)

cb_currency = sg.Combo(
    list(REAL_CURRENCY.values()),
    default_selected_real_currency,
    enable_events=True,
    size=(6, 1),
    key='-CB-REAL-CURRENCY-')

cb_theme = sg.Combo(
    ['SIWY', 'MAROCHA'],
    'MAROCHA',
    enable_events=True,
    size=(15, 1),
    key='-CB-THEME-')

start_time = datetime.now()
refresh_time = start_time
refresh_delay = 90
text_date_time = sg.Text(start_time.strftime("%B %d, %Y %H:%M:%S"))
gui_left_upper = [
    [
        sg.Text('density'),
        sg.Slider(key='density',
                  range=(50, 95),
                  resolution=5,
                  size=(10, 20),
                  default_value=90,
                  orientation='horizontal',
                  pad=((0, 0), (0, 20)),
                  tooltip='The ratio of households to housing units')
    ],
    [
        sg.Text('% similar wanted', tooltip=tooltip_1),
        sg.Combo(key='% similar wanted',
                 values=[0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100],
                 default_value=100,
                 tooltip=tooltip_1)
    ],
    [
        sg.Text('Max agents per step'),
        sg.Slider(
            key='max_agents_per_step',
            range=(10, 2000),
            resolution=10,
            size=(10, 20),
            default_value=500,
            orientation='horizontal',
            pad=((0, 0), (0, 20)),
            tooltip='Maximium number of unhappy agents to move each step.')
    ],
]
Beispiel #10
0
        yp = (yp - yp.min()) / (yp.max() - yp.min() + 0.000001)
        img.append(yp.reshape(y_dim, x_dim))
    img = np.dstack(img)
    if channels == 3: img = hsv2rgb(img)
    img = (img * 255).astype(np.uint8)

    return img


# --------------------------------- MAIN -----------------------------------------------------------

sg.theme('Dark Blue 3')  # please make your windows colorful

layout = [[sg.Text('Shape of image (required):')],
          [
              sg.Combo(['640 x 360', '854 x 480', '1280 x 720', '1920 x 1080'],
                       key='shape')
          ], [sg.Text('_' * 60)], [sg.Button('I love random!', size=(15, 3))],
          [sg.Text('Variance:')],
          [
              sg.Slider(range=(1, 200),
                        default_value=50,
                        size=(20, 15),
                        orientation='horizontal',
                        key='variance')
          ], [sg.Text('Customize layers')],
          [
              sg.Text('Layer 1:'),
              sg.Text('Number of neurons'),
              sg.InputText('8', size=(10, 15), key='l1_n'),
              sg.Text('Activation'),
              sg.Combo([
Beispiel #11
0
         image_subsample=1,
         border_width=False,
         key='etodatekey',
         target='einvisibletokey',
         format=("%Y-%m-%d")),
     sg.In(key='einvisibletokey',
           enable_events=True,
           default_text=date_export,
           visible=False)
 ],
 [
     sg.T('File Format:', size=(10, 1),
          pad=(10, 0)),
     sg.Combo(('.csv', '.xlsx', '.xls'),
              size=(13, 1),
              default_value='.csv',
              key='efileformatkey',
              readonly=True)
 ],
 [
     sg.B('Save',
          key='eokkey',
          pad=(10, 30),
          button_color=sg.TRANSPARENT_BUTTON,
          image_filename='images\\okcancel.png',
          font=('Roboto', 11),
          image_size=(100, 36),
          image_subsample=1,
          border_width=False),
     sg.B('Close',
          key='ecancelkey',
Beispiel #12
0
                      data=get_img_data('img/logo.png',
                                        maxsize=(200, 200),
                                        first=True))

spotify = spotipy.Spotify(
    client_credentials_manager=SpotifyClientCredentials())

sg.theme('Reddit')

left_column = [
    [
        sg.In(size=(25, 1), enable_events=True,
              key="query_input"),  # search box
        sg.Button('Search'),  # search button
        sg.Combo([i for i in range(1, 101)],
                 size=(3, 3),
                 key="k",
                 default_value=10),
        sg.Combo(['sum', 'avg', 'max', 'min'],
                 size=(4, 4),
                 key="score_selector",
                 default_value='avg'),
        sg.Combo(
            ['union', 'intersection', 'phrase', 'combo intersection-union'],
            size=(10, 10),
            key="mode_selector",
            default_value='union'),
        sg.Combo([i for i in range(1, 10)],
                 size=(3, 3),
                 key="interval_selector",
                 default_value='1')
    ],
Beispiel #13
0
    def create_gui(self):
        self.logger.debug("Creating GUI")

        latitude_col1 = [
            [PyGUI.Text("Degrees")],
            [PyGUI.InputText(size=(10, 1), key="latDeg", enable_events=True)],
        ]

        latitude_col2 = [
            [PyGUI.Text("Minutes")],
            [PyGUI.InputText(size=(10, 1), key="latMin", enable_events=True)],
        ]

        latitude_col3 = [
            [PyGUI.Text("Seconds")],
            [
                PyGUI.InputText(size=(10, 1),
                                key="latSec",
                                pad=(5, (3, 10)),
                                enable_events=True)
            ],
        ]

        longitude_col1 = [
            [PyGUI.Text("Degrees")],
            [PyGUI.InputText(size=(10, 1), key="lonDeg", enable_events=True)],
        ]

        longitude_col2 = [
            [PyGUI.Text("Minutes")],
            [PyGUI.InputText(size=(10, 1), key="lonMin", enable_events=True)],
        ]

        longitude_col3 = [
            [PyGUI.Text("Seconds")],
            [
                PyGUI.InputText(size=(10, 1),
                                key="lonSec",
                                pad=(5, (3, 10)),
                                enable_events=True)
            ],
        ]

        frameelevationlayout = [
            [PyGUI.Text("Feet")],
            [
                PyGUI.InputText(size=(20, 1),
                                key="elevFeet",
                                enable_events=True)
            ],
            [PyGUI.Text("Meters")],
            [
                PyGUI.InputText(size=(20, 1),
                                key="elevMeters",
                                enable_events=True,
                                pad=(5, (3, 10)))
            ],
        ]

        mgrslayout = [
            [
                PyGUI.InputText(size=(20, 1),
                                key="mgrs",
                                enable_events=True,
                                pad=(5, (3, 12)))
            ],
        ]

        framedatalayoutcol2 = [
            [PyGUI.Text("Name")],
            [PyGUI.InputText(size=(20, 1), key="msnName", pad=(5, (3, 10)))],
        ]

        framewptypelayout = [[
            PyGUI.Radio("WP",
                        group_id="wp_type",
                        default=True,
                        enable_events=True,
                        key="WP"),
            PyGUI.Radio("MSN",
                        group_id="wp_type",
                        enable_events=True,
                        key="MSN"),
            PyGUI.Radio("FP", group_id="wp_type", key="FP",
                        enable_events=True),
            PyGUI.Radio("ST", group_id="wp_type", key="ST", enable_events=True)
        ],
                             [
                                 PyGUI.Radio("IP",
                                             group_id="wp_type",
                                             key="IP",
                                             enable_events=True),
                                 PyGUI.Radio("DP",
                                             group_id="wp_type",
                                             key="DP",
                                             enable_events=True),
                                 PyGUI.Radio("HA",
                                             group_id="wp_type",
                                             key="HA",
                                             enable_events=True),
                                 PyGUI.Radio("HB",
                                             group_id="wp_type",
                                             key="HB",
                                             enable_events=True)
                             ],
                             [
                                 PyGUI.Button(
                                     "Quick Capture",
                                     disabled=self.capture_button_disabled,
                                     key="quick_capture",
                                     pad=(5, (3, 8))),
                                 PyGUI.Text("Sequence:",
                                            pad=((0, 1), 3),
                                            key="sequence_text",
                                            auto_size_text=False,
                                            size=(8, 1)),
                                 PyGUI.Combo(values=("None", 1, 2, 3),
                                             default_value="None",
                                             auto_size_text=False,
                                             size=(5, 1),
                                             readonly=True,
                                             key="sequence",
                                             enable_events=True)
                             ]]

        frameactypelayout = [[
            PyGUI.Radio("F/A-18C",
                        group_id="ac_type",
                        default=True,
                        key="hornet",
                        enable_events=True),
            PyGUI.Radio("AV-8B",
                        group_id="ac_type",
                        disabled=False,
                        key="harrier",
                        enable_events=True),
            PyGUI.Radio("M-2000C",
                        group_id="ac_type",
                        disabled=False,
                        key="mirage",
                        enable_events=True),
            PyGUI.Radio("F-14A/B",
                        group_id="ac_type",
                        disabled=False,
                        key="tomcat",
                        enable_events=True),
            PyGUI.Radio("A-10C",
                        group_id="ac_type",
                        disabled=False,
                        key="warthog",
                        enable_events=True),
        ]]

        framelongitude = PyGUI.Frame("Longitude", [[
            PyGUI.Column(longitude_col1),
            PyGUI.Column(longitude_col2),
            PyGUI.Column(longitude_col3)
        ]])
        framelatitude = PyGUI.Frame("Latitude", [[
            PyGUI.Column(latitude_col1),
            PyGUI.Column(latitude_col2),
            PyGUI.Column(latitude_col3)
        ]])
        frameelevation = PyGUI.Frame("Elevation",
                                     frameelevationlayout,
                                     pad=(5, (3, 10)))
        frameactype = PyGUI.Frame("Aircraft Type", frameactypelayout)

        framepositionlayout = [
            [framelatitude],
            [framelongitude],
            [
                frameelevation,
                PyGUI.Column([
                    [PyGUI.Frame("MGRS", mgrslayout)],
                    [
                        PyGUI.Button("Capture from DCS F10 map",
                                     disabled=self.capture_button_disabled,
                                     key="capture",
                                     pad=(1, (18, 3)))
                    ],
                    [
                        PyGUI.Text(self.capture_status,
                                   key="capture_status",
                                   auto_size_text=False,
                                   size=(20, 1))
                    ],
                ])
            ],
        ]

        frameposition = PyGUI.Frame("Position", framepositionlayout)
        framedata = PyGUI.Frame("Data", framedatalayoutcol2)
        framewptype = PyGUI.Frame("Waypoint Type", framewptypelayout)

        col0 = [
            [PyGUI.Text("Select profile:")],
            [
                PyGUI.Combo(values=[""] + self.get_profile_names(),
                            readonly=True,
                            enable_events=True,
                            key='profileSelector',
                            size=(27, 1))
            ],
            [
                PyGUI.Listbox(values=list(),
                              size=(30, 27),
                              enable_events=True,
                              key='activesList')
            ],
            [
                PyGUI.Button("Add", size=(12, 1)),
                PyGUI.Button("Update", size=(12, 1))
            ],
            [PyGUI.Button("Remove", size=(26, 1))],
            # [PyGUI.Button("Move up", size=(12, 1)),
            # PyGUI.Button("Move down", size=(12, 1))],
            [
                PyGUI.Button("Save profile", size=(12, 1)),
                PyGUI.Button("Delete profile", size=(12, 1))
            ],
            [PyGUI.Text(f"Version: {self.software_version}")]
        ]

        col1 = [
            [PyGUI.Text("Select preset location")],
            [
                PyGUI.Combo(values=[""] + [
                    base.name for _, base in self.editor.default_bases.items()
                ],
                            readonly=False,
                            enable_events=True,
                            key='baseSelector'),
                PyGUI.Button(button_text="F", key="filter")
            ],
            [framedata, framewptype],
            [frameposition],
            [frameactype],
            [PyGUI.Button("Enter into aircraft", key="enter")],
        ]

        colmain1 = [
            [
                PyGUI.MenuBar([[
                    "Profile",
                    [
                        [[
                            "Import",
                            [
                                "Paste as string from clipboard",
                                "Load from encoded file"
                            ]
                        ]],
                        "Export",
                        [
                            "Copy as string to clipboard",
                            "Copy plain text to clipboard",
                            "Save as encoded file"
                        ],
                    ]
                ]])
            ],
            [PyGUI.Column(col1)],
        ]

        layout = [
            [PyGUI.Column(col0), PyGUI.Column(colmain1)],
        ]

        return PyGUI.Window('DCS Waypoint Editor', layout)
class gui_broker():

    #Set theme layout
    sg.theme('Default 1')

    # Get assets from assets_list
    assets = AssetsList.get_assetslist()

    # Layout
    layout = [
        [
            sg.Text('Painel da Corretora',
                    size=(40, 0),
                    text_color='#8B0000',
                    font=('Helvetica', 12),
                    justification='center')
        ],
        [sg.Text('Servidor'),
         sg.Input('localhost', size=(20, 2))],
        [
            sg.Text('Informações da oferta:',
                    text_color='red',
                    justification='center')
        ],
        [
            sg.Text('Cod. Corretora'),
            sg.Combo(assets),
            sg.Text('Ativo'),
            sg.Combo(assets)
        ],
        [
            sg.Text('Quantidade'),
            sg.Input('', size=(7, 0)),
            sg.Text('Preço'),
            sg.Input('', size=(7, 0))
        ],
        [sg.Button('Compra', size=(20, 0)),
         sg.Button('Venda', size=(20, 0))],
        #[sg.Button('Abrir Visualizador', size=(42,0))]
    ]

    #Window
    window = sg.Window('Painel da Corretora', layout, margins=(20, 20))

    while True:
        event, values = window.read()
        # Checks if quantity and price is not null
        if values[3] != '' and values[3] != '0' and values[4] != '' and values[
                4] != '0':

            # Checks if active and broker have been completed
            if values[1] != '' and values[2] != '':

                if event.lower() == 'compra' or event.lower() == 'venda':
                    routing_key = event.lower() + '.' + values[2].lower()
                    message = values[3] + '; ' + values[4] + '; ' + values[
                        1].lower()

                    emit_broker = EmitBroker(host=values[0],
                                             routing_key=routing_key,
                                             message=message)
                    emit_broker.start()

                if event == sg.WIN_CLOSED:  # if user closes window or clicks cancel
                    break
import importlib
importlib.reload(mc)
importlib.reload(ms)
#excelから設定値等を読み込み(将来対応)
#S=ba.excel_read(2,2)

start_address = 0
sendlist = [0] * 65535
#  セクション1 - オプションの設定と標準レイアウト
sg.theme('Dark Blue 3')

layout_tab1 = [[sg.Text("")],
               [
                   sg.Text("ファンクション", size=(15, 1)),
                   sg.Combo(("3", "16(将来対応)"),
                            default_value="3",
                            size=(10, 1),
                            key="-function_code-")
               ],
               [
                   sg.Text("開始レジスタ", size=(15, 1)),
                   sg.InputText("123", key="start_register")
               ],
               [
                   sg.Text("レジスタ数", size=(15, 1)),
                   sg.InputText("2", key="amount_of_registers")
               ], [sg.Submit(button_text="クエリ実行", key="p1")]]

layout_tab2 = [
    [sg.Text("")],
    [
        sg.Text("サーバー所持値", size=(15, 1)),
import random
import PySimpleGUI as gui

# define the gui layout
layout = [[
    gui.Text("Size"),
    gui.Combo(list(range(8, 17)), default_value=8, key="size")
], [gui.Input(key="pass", size=(16, 1), default_text="P@S$C0D3")],
          [gui.Button("Generate", focus=True)]]

#Initialize the gui Window
window = gui.Window("PassWordGenerator", layout, size=(200, 100))

# Requirements of the password
small = 'abcdefghijklmnopqrstuvwxyz'
capital = small.upper()
numbers = '1234567890'
symbols = '_!@#$%^&*+-><'

# now the gui implementation begins
while True:
    event, values = window.read()

    if event == "Generate":
        #password generator
        # Create a random password from above data
        password = "".join(
            random.sample("".join([small, capital, numbers, symbols]),
                          values["size"]))
        window["pass"].update(password)
    if event == gui.WIN_CLOSED:
Beispiel #17
0
 ],
 [
     sg.Slider(**ds,
               key="_loan_amount_slider_",
               enable_events=True),
     sg.Slider(**ds,
               key="_down_payment_slider_",
               enable_events=True)
 ],
 [
     sg.Text("Loan Years", **dst, size=(10, 1)),
     sg.Text("Base Loan Interest", **dst),
     sg.Text("Supplementary Loan Interest", **dst)
 ],
 [
     sg.Combo([num for num in range(1, 41)],
              default_value=40,
              size=(3, 1),
              font=("Helvetica", 14),
              key="_loan_years_"),
     sg.InputText(**ib,
                  key="_base_loan_interest_",
                  default_text=3.54),
     sg.InputText(**ib,
                  key="_sup_loan_interest_",
                  default_text=4.84)
 ], [sg.Button("Calculate Monthly Payment")],
 [
     sg.Text("Monthly Payment is: ", **dt),
     sg.Text(0, key="_property_monthly_payment_", **dt)
 ]]
Beispiel #18
0
def main():
    inputShape = video.read()[1].shape
    camHeight = inputShape[0]
    camWidth = inputShape[1]
    fileName = ""
    sg.theme('Black')

    layout = [[sg.Text("Welcome to the Virtual Camera Hub!")], [sg.Button("Continue")]]
    window = sg.Window("Virtual Camera Hub", layout)


    while True:
        event, values = window.Read(timeout=20, timeout_key='timeout')
        if event == "Continue" or event == sg.WIN_CLOSED:
            window.close()
            break

    layout = [[sg.Text('Continue if this is the correct webcam', size=(40, 1), justification='center', font='Helvetica 20')],[sg.Image(filename='', key='image')], [sg.Button("Continue")],]
    window = sg.Window('Virtual Camera Hub', layout)

    while True:
        event, values = window.Read(timeout=20, timeout_key='timeout')
        if event == sg.WIN_CLOSED:
            exit(0)
        if event == 'Continue':
            window.close()
            break
        window.FindElement('image').Update(data=cv2.imencode('.png', video.read()[1])[1].tobytes()) 


    layout = [  [sg.Text('Please enter the file name of the image or video to use from the filler folder:'), sg.InputText()],
                [sg.Text('What is the file type?'), sg.Combo(['.png', '.avi'], enable_events=True)],
                [sg.Button('Continue'), sg.Button('Take a New Photo'), sg.Button('Make a New Video')],]
    window = sg.Window('Virtual Camera Hub', layout)


    while True:
        event, values = window.Read(timeout=20, timeout_key='timeout')
        if event == sg.WIN_CLOSED:
            exit(0)
        if event == 'Continue' and values[0] != "" and values[1] != "":
            fileName = values[0]
            fileType = values[1]
            window.close()
            break
        if event == "Take a New Photo" or event == "Make a New Video":
            window.close()
            break

    script_dir = os.path.dirname(os.path.abspath(__file__))
    rel_path = "./filler/"
    dir_path = os.path.normpath(os.path.join(script_dir, rel_path))

    photoLayout = [[sg.Text('Take a New Photo', size=(40, 1), justification='center', font='Helvetica 20')],[sg.Image(filename='', key='image')], [sg.Button("Take Photo")],]
    photoWindow = sg.Window('Virtual Camera Hub', photoLayout)

    if event == "Take a New Photo":
        while True:
            button, values = photoWindow.Read(timeout=20, timeout_key='timeout')
            ret, frame = video.read()
            if button == 'Take Photo':
                fileName = 'Capture'
                fileType = '.png'
                fileCombine = fileName + fileType
                os.chdir(dir_path)
                cv2.imwrite(fileCombine, frame)
                photoWindow.close()
                break
            photoWindow.FindElement('image').Update(data=cv2.imencode('.png', video.read()[1])[1].tobytes())
                
    videoLayout = [[sg.Text('Make a New Video', size=(40, 1), justification='center', font='Helvetica 20')],[sg.Image(filename='', key='image')], [sg.Button("Start Video"), sg.Button("Stop Video")]]
    videoWindow = sg.Window('Virtual Camera Hub', videoLayout)

    script_dir = os.path.dirname(os.path.abspath(__file__))
    rel_path = "./filler/Video.avi"
    dir_path = os.path.normpath(os.path.join(script_dir, rel_path))

    if event == "Make a New Video":
        events = []
        fourcc = cv2.VideoWriter_fourcc(*'XVID')
        out = cv2.VideoWriter(dir_path, fourcc, 30, (640, 480))

        while True:
            button, values = videoWindow.Read(timeout=20, timeout_key='timeout')
            events.append(button)
            ret, frame = video.read()
            if button == 'Start Video' or 'Start Video' in events:
                fileName = 'Video'
                fileType = '.avi'
                fileCombine = fileName + fileType
                out.write(frame)
            if button == 'Stop Video' and 'Start Video' in events:
                out.release()
                videoWindow.close()
                break
            videoWindow.FindElement('image').Update(data=cv2.imencode('.png', video.read()[1])[1].tobytes())



    layout = [  [sg.Text('Activate Virtual Camera', size=(40, 1), justification='center', font='Helvetica 20')],
                [sg.Button('Webcam'), sg.Button('Filler'), sg.Button('Exit')],]

    window = sg.Window('Virtual Camera Hub', layout)

    script_dir = os.path.dirname(os.path.abspath(__file__))
    rel_path = "./filler/{}{}".format(fileName, fileType)
    
    if event == "Take a New Photo":
        rel_path = "../filler/{}{}".format(fileName, fileType)
    file_path = os.path.normpath(os.path.join(script_dir, rel_path))

    if fileType == '.png':
        filler = imageio.imread(file_path)
        frameFinal = cv2.resize(filler, (640, 480))
        frameFinal = cv2.cvtColor(frameFinal, cv2.COLOR_RGBA2RGB)

    script_dir = os.path.dirname(os.path.abspath(__file__))
    rel_path = "./filler/{}{}".format(fileName, fileType)
    file_path = os.path.normpath(os.path.join(script_dir, rel_path))

    if fileType == '.avi':
        frameVideo = cv2.VideoCapture(file_path)
        length = int(frameVideo.get(cv2.CAP_PROP_FRAME_COUNT))

    event, values = window.read()
    if event == "Exit" or event == sg.WIN_CLOSED:
        exit(0)
    if event == "Webcam":
        window.close()
    if event == "Filler":
        window.close()

    with pyvirtualcam.Camera(height=camHeight, width=camWidth, fps=30) as cam:
            print(f'Using virtual camera: {cam.device}')
            if fileType == '.avi':
                count = 1
                reverse = False
                frameList = []

                while len(frameList) != length:
                    ret, frame = frameVideo.read()
                    if not ret:
                        raise RuntimeError('Error fetching frame')
                    frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
                    frameList.append(frame)
                
            while True:
                ret, frame = video.read()
                
                if not ret:
                    raise RuntimeError('Error fetching frame')
                
                RGBframe = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)

                if event == "Webcam":
                    cam.send(RGBframe)
                if event == "Filler":
                    if fileType == ".png":
                        cam.send(frameFinal)
                    elif fileType == ".avi":
                        frame = frameList[count]
                        if count == length - 1 or count == 0:
                            reverse = not reverse           
                        cam.send(frame)
                        if reverse == True:
                            count -= 1
                        elif reverse == False:
                            count += 1

                if keyboard.is_pressed(chr(27)):
                    break


                cam.sleep_until_next_frame()
def settings_window():
    """
    Show the settings window.
    This is where the folder paths and program paths are set.
    Returns True if settings were changed

    :return: True if settings were changed
    :rtype: (bool)
    """

    try:
        global_editor = sg.pysimplegui_user_settings.get('-editor program-')
    except:
        global_editor = ''
    try:
        global_explorer = sg.pysimplegui_user_settings.get(
            '-explorer program-')
    except:
        global_explorer = ''
    try:  # in case running with old version of PySimpleGUI that doesn't have a global PSG settings path
        global_theme = sg.theme_global()
    except:
        global_theme = ''

    layout = [
        [sg.T('Program Settings', font='DEFAULT 25')],
        [sg.T('Path to Tree', font='_ 16')],
        [
            sg.Combo(sorted(sg.user_settings_get_entry('-folder names-', [])),
                     default_value=sg.user_settings_get_entry(
                         '-demos folder-', get_demo_path()),
                     size=(50, 1),
                     key='-FOLDERNAME-'),
            sg.FolderBrowse('Folder Browse', target='-FOLDERNAME-'),
            sg.B('Clear History')
        ],
        [sg.T('Editor Program', font='_ 16')],
        [sg.T('Leave blank to use global default'),
         sg.T(global_editor)],
        [
            sg.In(sg.user_settings_get_entry('-editor program-', ''),
                  k='-EDITOR PROGRAM-'),
            sg.FileBrowse()
        ],
        [sg.T('File Explorer Program', font='_ 16')],
        [sg.T('Leave blank to use global default'),
         sg.T(global_explorer)],
        [
            sg.In(sg.user_settings_get_entry('-explorer program-'),
                  k='-EXPLORER PROGRAM-'),
            sg.FileBrowse()
        ],
        [sg.T('Theme', font='_ 16')],
        [sg.T('Leave blank to use global default'),
         sg.T(global_theme)],
        [
            sg.Combo([''] + sg.theme_list(),
                     sg.user_settings_get_entry('-theme-', ''),
                     readonly=True,
                     k='-THEME-')
        ],
        [
            sg.T('Double-click a File Will:'),
            sg.R('Run',
                 2,
                 sg.user_settings_get_entry('-dclick runs-', False),
                 k='-DCLICK RUNS-'),
            sg.R('Edit',
                 2,
                 sg.user_settings_get_entry('-dclick edits-', False),
                 k='-DCLICK EDITS-'),
            sg.R('Nothing',
                 2,
                 sg.user_settings_get_entry('-dclick none-', False),
                 k='-DCLICK NONE-')
        ],
        [
            sg.CB('Use Advanced Interface',
                  default=advanced_mode(),
                  k='-ADVANCED MODE-')
        ],
        [sg.B('Ok', bind_return_key=True),
         sg.B('Cancel')],
    ]

    window = sg.Window('Settings', layout)

    settings_changed = False

    while True:
        event, values = window.read()
        if event in ('Cancel', sg.WIN_CLOSED):
            break
        if event == 'Ok':
            sg.user_settings_set_entry('-demos folder-',
                                       values['-FOLDERNAME-'])
            sg.user_settings_set_entry('-editor program-',
                                       values['-EDITOR PROGRAM-'])
            sg.user_settings_set_entry('-theme-', values['-THEME-'])
            sg.user_settings_set_entry(
                '-folder names-',
                list(
                    set(
                        sg.user_settings_get_entry('-folder names-', []) + [
                            values['-FOLDERNAME-'],
                        ])))
            sg.user_settings_set_entry('-explorer program-',
                                       values['-EXPLORER PROGRAM-'])
            sg.user_settings_set_entry('-advanced mode-',
                                       values['-ADVANCED MODE-'])
            sg.user_settings_set_entry('-dclick runs-',
                                       values['-DCLICK RUNS-'])
            sg.user_settings_set_entry('-dclick edits-',
                                       values['-DCLICK EDITS-'])
            sg.user_settings_set_entry('-dclick nothing-',
                                       values['-DCLICK NONE-'])
            settings_changed = True
            break
        elif event == 'Clear History':
            sg.user_settings_set_entry('-folder names-', [])
            sg.user_settings_set_entry('-last filename-', '')
            window['-FOLDERNAME-'].update(values=[], value='')

    window.close()
    return settings_changed
Beispiel #20
0
def 控件():

    menu_def = [['&File', ['&Open', '&Save', 'E&xit', 'Properties']],
['&Edit', ['Paste', ['Special', 'Normal', ], 'Undo'], ],['&Help', '&About...'], ]

    # ------ Column Definition ------ #

#当较小的元素左侧有一个较高的元素时,则需要一列。
    #将来也放到layout的一个控件里面sg.Column(col, background_color='blue')
    column1 = [[sg.Text('Column 1', justification='center', size=(10, 1))],
[sg.Spin(values=('Spin Box 1', '2', '3'),initial_value='Spin Box 1')],
[sg.Spin(values=('Spin Box 1', '2', '3'),initial_value='Spin Box 2')],
[sg.Spin(values=('Spin Box 1', '2', '3'), initial_value='Spin Box 3')]]

    layout = [

        [sg.Menu(menu_def, tearoff=True)],

        #文本显示内容,那个relief参数可以添加阴影效果
        #sg.RELIEF_RIDGE,RELIEF_RAISED为外凸效果
        #sg.RELIEF_FLAT平滑效果,也就是默认值
        #RELIEF_GROOVE,sg.RELIEF_SUNKEN内凹效果
        #RELIEF_SOLID黑框选中
        [sg.Text('(Almost) All widgets in one Window!', size=(
        30, 1), justification='center', font=("Helvetica", 25),relief=sg.RELIEF_RIDGE)],

        [sg.Text('Here is some text.... and a place to enter text')],

        # 单行文本输入框
        [sg.InputText('This is my text')],

        #框架组件,之前说过
        [sg.Frame(layout=[
            #复选框,将来valuse的返回值只有False,True
            [sg.CBox('这里输什么将来就显示什么', size=(10, 1)),
            sg.CBox('My second checkbox!', default=True)],

            #这里是单选框,第一个参数是实际显示值,第二个是id,这个只要学过HTML的都懂吧
            [sg.Radio('My first Radio!     ', "123",default=True, size=(10, 1)),
            sg.Radio('My second Radio!', "123")]], title='Options', relief=sg.RELIEF_SUNKEN,
            tooltip='Use these to set flags')],

        #这个是多行输入框
        [sg.MLine(default_text='This is the default Text should you decide not to type anything', size=(35, 3)),
        sg.MLine(default_text='A second multi-line', size=(35, 3))],

        #这个是多选一框(好像叫selectbox),就是那种选择出身年份的,name和value都很好懂
        [sg.Combo(('Combobox 1', 'Combobox 2'), default_value='Combobox 1', size=(20, 1)),

        #用来滑动的条,你可以选择滑动条的范围,方向"h"/"v",尺寸,默认值
         #实际值就是你拖动的结果
         sg.Slider(range=(1, 100), orientation='h', size=(34, 20), default_value=85)],

        #不知道是个啥,跟上面那个Combo很像
        [sg.OptionMenu(('Menu Option 1', 'Menu Option 2', 'Menu Option 3'))],

        #就是你平时用browse实际出来的那个有拖动条的那种
        #功能上跟Combo很像
        [sg.Listbox(values=('Listbox 1', 'Listbox 2', 'Listbox 3'), size=(30, 3))],

       #可以画线,还可以展位(用" ")
        [sg.Text('_' * 100)],

        #File选择器,值就是你选中的File的路径
         [ sg.FolderBrowse()],

        #快捷方式按钮,还有提示tooltip就是你把光标移动到控件旁边后会提示的小白色的提示框
        [sg.Submit(tooltip='Click to submit this form'), sg.Cancel()]]

    window = sg.Window('Everything bagel', layout,
                       no_titlebar=True,
                       default_element_size=(40, 1),
                       grab_anywhere=False,
                       )
    event, values = window.read()
Beispiel #21
0
    def main_window(self):
        layout = [
            [sg.Text("Choose Operation to perform:")],
            [
                sg.Combo(['Copy', 'Move'],
                         default_value='Move',
                         key='OPERATION')
            ],
            [
                sg.Frame(layout=[[sg.Text("Sort by Type")],
                                 [
                                     sg.Radio("Enabled",
                                              "RADIO1",
                                              default=False,
                                              key='SBYTE',
                                              enable_events=True),
                                     sg.Radio("Disabled",
                                              "RADIO1",
                                              default=True,
                                              key='SBYTD',
                                              enable_events=True)
                                 ]],
                         title='Sorting Options',
                         title_color='red',
                         relief=sg.RELIEF_SUNKEN)
            ], [sg.Text("Choose filetype:")],
            [
                sg.Combo([
                    "Archive ('.zip', '.rar'...)", "Image ('.png', '.jpg'...)",
                    "Text ('.txt', '.docx'...)"
                ],
                         key='FILETYPE',
                         enable_events=True)
            ], [sg.Ok(), sg.Cancel()]
        ]

        window = sg.Window('Choose filetype to move',
                           layout,
                           default_element_size=(40, 1))

        while True:
            event, values = window.read()
            if event in (sg.WIN_CLOSED, 'Cancel'):
                break
            elif event in 'Ok':
                if values['FILETYPE'] not in file_type:
                    append_file_type(values['FILETYPE'])
                    run_fmover = FileMover()
                    append_mode(values['OPERATION'])
                    if len(sort_list) == 1:
                        for value in sort_list:
                            if value == 'Sort by Type':
                                run_fmover.filemover(values['OPERATION'],
                                                     value)
                            else:
                                run_fmover.filemover(values['OPERATION'], None)
                    else:
                        run_fmover.filemover(values['OPERATION'], None)

                else:
                    run_fmover = FileMover()
                    append_mode(values['OPERATION'])
                    if len(sort_list) == 1:
                        for value in sort_list:
                            if value == 'Sort by Type':
                                run_fmover.filemover(values['OPERATION'],
                                                     value)
                            else:
                                run_fmover.filemover(values['OPERATION'], None)
                    else:
                        run_fmover.filemover(values['OPERATION'], None)

            elif event in 'SBYTE':
                if values['SBYTE'] is True:
                    sort_list.append('Sort by Type')
                else:
                    pass

            elif event in 'SBYTD':
                if values['SBYTD'] is True:
                    sort_list.clear()
                else:
                    pass
            else:
                pass

        window.close()
Beispiel #22
0
        if self.reference_agent.distance_to_xy(center_pixel()) >= 250:
            self.grow_shrink('shrink')
            return True
        elif self.reference_agent.distance_to_xy(center_pixel()) <= 50:
            self.grow_shrink('grow')
            return True
        return False


# ############################################## Define GUI ############################################## #
import PySimpleGUI as sg
gui_left_upper = [
    [
        sg.Combo(KNOWN_FIGURES,
                 key='shape',
                 default_value='netlogo_figure',
                 pad=((0, 9), (0, 0)),
                 tooltip='Shape of element'),
        sg.Slider(key='nbr_agents',
                  range=(1, 100),
                  default_value=18,
                  size=(10, 20),
                  orientation='horizontal',
                  pad=((0, 0), (0, 20)),
                  tooltip='Number of elements')
    ],
    [
        sg.Text('Figure to trace'),
        sg.Combo(['breathe', 'clockwise', 'counter-clockwise', 'twitchy'],
                 key='figure',
                 default_value='clockwise')
Beispiel #23
0
layout = [
    [sg.Text('')],  # padding
    [
        sg.Image(r'resources\icon.png'),
        sg.Text('SimpleGA', font=('Helvetica', 21))
    ],  # Title
    [
        sg.Text('A program for parameters evaluation for a genetic algorithm.',
                font=('Helvetica', 12))
    ],  # subtitle
    [sg.Text('_' * 80)],
    [
        sg.Text('Evaluate Parameter: '),
        sg.Combo(values=parameters,
                 default_value=parameters[0],
                 enable_events=True,
                 size=(24, 4),
                 font=('Helvetica', 10),
                 key='_COMBO_')
    ],  # combobox with parameter selection
    [sg.Text('')],  # padding

    # range(start, stop, step)
    [
        sg.Text('Start'),
        sg.Spin([i for i in range(2, 10000)],
                initial_value=2,
                size=(6, 1),
                key='_START_'),
        sg.Text('   Stop'),
        sg.Spin([i for i in range(2, 10000)],
                initial_value=4,
Beispiel #24
0
        imwatchingyou.show_popout_window()
    3. You must find a location in your code to "refresh" the debugger.  Some loop that's executed often.
        In this loop add this call:
        imwatchingyou.refresh()
"""

layout = [
    [sg.T('A typical PSG application')],
    [sg.In(key='_IN_')],
    [sg.T('        ', key='_OUT_', size=(30, 1))],
    [
        sg.Radio('a', 1, key='_R1_'),
        sg.Radio('b', 1, key='_R2_'),
        sg.Radio('c', 1, key='_R3_')
    ],
    [sg.Combo(['c1', 'c2', 'c3'], size=(6, 3), key='_COMBO_')],
    [sg.Output(size=(50, 6))],
    [sg.Ok(), sg.Exit(),
     sg.Button('Debugg'),
     sg.Button('Popout')],
]

window = sg.Window('This is your Application Window', layout)

counter = 0
timeout = 100

# Start the program with the popout window showing so you can immediately start debugging!
imwatchingyou.show_debugger_popout_window()

while True:  # Your Event Loop
Beispiel #25
0
# Main Menu ======================================================================================
# Make main menu layout
menu_layout = [  #matrica sa svim izborima
    [
        sg.Text(size=(10, 1)),
        sg.Text("Main menu", size=(10, 1), justification='center'),
        sg.Text(size=(10, 1))
    ],
    [
        sg.Text("Player 1:", size=(10, 1)),
        sg.Text(size=(12, 1)),
        sg.Text("Player 2:", size=(10, 1))
    ],
    [
        sg.Combo(['Human', 'AI Lvl1', 'AI Lvl2', 'AI Lvl3'],
                 size=(10, 1),
                 enable_events=True),
        sg.Text(size=(10, 1)),
        sg.Combo(['Human', 'AI Lvl1', 'AI Lvl2', 'AI Lvl3'],
                 size=(10, 1),
                 enable_events=True)
    ],
    [
        sg.InputText("Name", size=(12, 1), disabled=True, key='p1name'),
        sg.Text(size=(10, 1)),
        sg.InputText("Name", size=(12, 1), disabled=True, key='p2name')
    ], [sg.Text(size=(10, 1))],
    [
        sg.Text(size=(10, 1)),
        sg.Text("Difficulty:", size=(10, 1), key='diff'),
        sg.Text(size=(10, 1))
Beispiel #26
0
                   finalize=True)

event, values = window.read()
window.close()

if event in (sg.WINDOW_CLOSED, '-Exit-'):
    quit()

layout = [[
    sg.Text('Età:', size=(22, 1), justification='right'),
    sg.Input(key='Age', size=(12, 1), enable_events=True)
],
          [
              sg.Text('Sesso:', size=(22, 1), justification='right'),
              sg.Combo(['Uomo', 'Donna'],
                       key='Gender',
                       default_value='Uomo',
                       size=(10, 1))
          ],
          [
              sg.Text('Poliuria:', size=(22, 1), justification='right'),
              sg.Combo(['Sì', 'No'],
                       key='Polyuria',
                       default_value='No',
                       size=(10, 1))
          ],
          [
              sg.Text('Polidipsia:', size=(22, 1), justification='right'),
              sg.Combo(['Sì', 'No'],
                       key='Polydipsia',
                       default_value='No',
                       size=(10, 1))
Beispiel #27
0
Train_path = ""
Test_path = ""
column1 = [[sg.Button('Write a review', font='Arial', size=(45, None), button_color=('white', '#3f3f44'), )],
           ]
column2 = [[sg.Text(' ' * 30, size=(None, 1))],
           [sg.FileBrowse('Select train data', font='Arial', button_color=('white', '#3f3f44'), size=(16, None),
                          file_types=(("text files", ".csv"), ("all files", "*.*"),))],
           [sg.Text(' ' * 30, size=(None, 1))],
           [sg.FileBrowse('Select test data', font='Arial', button_color=('white', '#3f3f44'), size=(16, None),
                          file_types=(("text files", ".csv"), ("all files", "*.*"),))],
           [sg.Text(' ' * 30, size=(None, 1))],
           [sg.Button('Show accuracy', font='Arial', size=(16, None), button_color=('white', '#3f3f44'), )],
           [sg.Text(' ' * 30, size=(None, 1))],
           [sg.Button('Classify', font='Arial', size=(16, None), button_color=('white', '#3f3f44'), )],
            [sg.Text(' ' * 15, size=(None, 1))],
           [sg.Text(' ' * 5, size=(None, 1)),sg.Combo(['1', '2','3','4','5','6','7','8'],key='Depth'),sg.Text('Depth')]]
column3 = [[sg.Multiline('User log data will be displayed here :\n',text_color='#23E000', size=(45, 20), key='-OUTPUT-' + sg.WRITE_ONLY_KEY)],
           ]
column4 = [[sg.Button('Show Tree', font='Arial', size=(16, None), button_color=('black', '#fdcb9e'))],
           ]
column5 = [[sg.Button('Quit', font='Arial', size=(16, None), button_color=('black', '#fdcb9e'))],

           ]

layout = [[sg.Column(column1, justification='center')], [sg.Column(column2, justification='l'), sg.Column(column3)],
          [sg.Text(' ' * 10), sg.Column(column4, element_justification='left'), sg.Column(column5)],

          ]

# Display the window and get values
Beispiel #28
0
        # Refresh the display from self.ca_lines
        self.set_display_from_lines()
        # Update the 'rows' widget.
        gui_set('rows', value=len(self.ca_lines))


# ############################################## Define GUI ############################################## #
import PySimpleGUI as sg
""" 
The following appears at the top-left of the window. 
"""
ca_left_upper = [
    [
        sg.Text('Row justification'),
        sg.Combo(values=['Left', 'Center', 'Right'],
                 key='justification',
                 default_value='Right')
    ],
    HOR_SEP(30),
    [
        sg.Text('Initial row:',
                pad=(None, (20, 0)),
                tooltip="0's and 1's for the initial row. An empty \n" +
                "string will set the initial row to all 0's."),
        sg.Input(default_text="1",
                 key='init_line',
                 size=(20, 1),
                 text_color='white',
                 background_color='steelblue4',
                 justification='center')
    ],
def create_GUI():
    sg.theme('Dark Teal 11')

    menu_def = [['File', ['Select CustomLevels Folder', 'Exit']],
                ['Settings', ['Use Normal Auto Offset', 'Use Fast Auto Offset            X']],
                ['Help', 'About'], ]

    menu_elem = sg.Menu(menu_def)

    col1 = [
        [sg.Text(size=(38,2), key='track_name_and_author')],
        [sg.Text(size=(38,1), key='track_duration')],
        [sg.Image(key='cover_image')],
        [sg.Text('', size=(38, 1))],  # Empty line
        [sg.Text('', key='video_name', size=(38, 2))],
        [sg.Text('', key='video_duration', size=(38, 1))],
        [sg.Image(r'', key='thumbnail')],
        [sg.Text('Video Downloaded - ', size=(38, 1), visible=False, key='video_size')],
        [sg.Text('Offset ', size=(38, 1), visible=False, key='offset')]
    ]

    layout = [
              [menu_elem],
              [sg.Combo(values=('All tracks', 'Tracks without video', 'Tracks with video'),
                        default_value='All tracks', enable_events=True, key='track_filter', size=(30, 1)),
                        sg.Text('Filter'), sg.InputText(size=(10, 1), key='filter', enable_events=True)],
              [sg.Listbox(values='', size=(50, 34), enable_events=True, key='tracklist',
                          right_click_menu=['&Right', ['Search Youtube', 'Open track folder', 'Automate']]), sg.Column(col1, vertical_alignment="top")],
              [sg.Text('Youtube Search Term:')],
              [sg.Input('', size=(50, 1), key='search_field')],
              [sg.Button('Search Youtube', bind_return_key=True),
               sg.Button('Download', disabled=True), sg.InputText(enable_events=True, key='bs_folder', visible=False),
               sg.Button('Auto Offset', disabled=True)]
              ]

    global window
    windowSize = (953, 783)  # Default window size
    window = sg.Window('Beat Saber Track Manager', layout, font='Courier 12', icon='BSTM.ico', size=(windowSize), resizable=True).finalize()

    # Check for config.ini
    config_bs_folder()
    auto_offset = 1  # Use fast auto offset as default

    while True:
        event, values = window.read(timeout=1000)
        if event == sg.WIN_CLOSED or event == 'Exit':  # if user closes window or clicks cancel
            if os.path.exists('cover.png'):
                os.remove('cover.png')

            if os.path.exists('thumbnail.png'):
                os.remove('thumbnail.png')
            break

        # Grab the text from the chosen listbox choice and paste it into searchbox in readable format.
        # Also grabs the data from the track's info.dat
        if event == 'tracklist':
            #info = None  # Clear video info from previous searches
            clear_info('')
            tracklist()

        # Run search with the search term, only grabs the 1st result
        if event == 'Search Youtube':
            search_youtube()

        #  Download the video, when download button is pressed
        if event == 'Download':
            download_video()

        # Calculate audio/video offset using MVP's tools or librosa
        if event == 'Auto Offset':
            run_auto_offset(auto_offset)

        if event == 'bs_folder':
            browse_bs_folder()

        if event == 'track_filter':
            check_tracks()

        if event == 'Open track folder':
            try:
                search = str(values['tracklist'])  # Chosen track
                track_path = values['bs_folder'] + '/' + search.replace('[\'', '').replace('\']', '').replace('"]', '').replace('["', '')
                print(track_path)
                os.startfile(track_path)
            except UnboundLocalError:
                print('No track selected')
            except FileNotFoundError:
                print('No track selected')

        if event == 'Automate':
            if search_youtube():
                print('search success')
                if download_video():
                    print('dl success')
                    run_auto_offset(auto_offset)

        if event == 'Select CustomLevels Folder':
            trackfolder = sg.popup_get_folder('', title='Select CustomLevels folder',
                                              no_window=True, modal=True, keep_on_top=True)
            if not trackfolder:
                print('No folder selected!')
            else:
                clear_info('')
                window['bs_folder'].update(trackfolder)
                browse_bs_folder()

        if event == 'filter':

            results = []

            if values['track_filter'] == 'All tracks':
                filter_list = both_video
            elif values['track_filter'] == 'Tracks without video':
                filter_list = no_video
            elif values['track_filter'] == 'Tracks with video':
                filter_list = yes_video

            if len(values['filter']) < 2:
                window['tracklist'].update(filter_list)

            # Don't filter, if the filter has less than 3 characters
            if len(values['filter']) < 3:
                continue
            else:
                clear_info('')
                for i in filter_list:
                    if (values['filter']) in i.lower():
                        results.append(i)
                window['tracklist'].update(results)
                window.Refresh()

        if event == 'Use Normal Auto Offset':
            auto_offset = 0
            menu_def = [['File', ['Select CustomLevels Folder', 'Exit']],
                        ['Settings', ['Use Normal Auto Offset     X', 'Use Fast Auto Offset']],
                        ['Help', 'About'], ]
            menu_elem.Update(menu_def)

        if event == 'Use Fast Auto Offset':
            auto_offset = 1
            menu_def = [['File', ['Select CustomLevels Folder', 'Exit']],
                        ['Settings', ['Use Normal Auto Offset', 'Use Fast Auto Offset            X']],
                        ['Help', 'About'], ]
            menu_elem.Update(menu_def)

        if event == 'About':
            print(window.size)
            webbrowser.open('https://github.com/CuriousCod/BeatSaberTrackManager/tree/master')

        # Works perfectly when maximizing window, otherwise only updates when any action is taken in the window
        if windowSize != window.size:
            print(window.size)
            CurrentWindowSize = window.size
            TracksElementSize = (int(CurrentWindowSize[0] * 0.1) - 45, int(CurrentWindowSize[1] * 0.044))
            print(TracksElementSize)
            window['tracklist'].set_size(TracksElementSize)
            windowSize = window.size

    window.close()
Beispiel #30
0
    def make_window(self,
                    caption,
                    gui_left_upper,
                    gui_right_upper=None,
                    clear=None,
                    bounce=True,
                    fps=None):
        """
        Create the window, including sg.Graph, the drawing surface.
        """
        # --------------------- PySimpleGUI window layout and creation --------------------
        clear_line = [] if clear is None else \
                     [sg.Checkbox('Clear before setup?', key='Clear?', default=clear, pad=((0, 0), (10, 0)),
                                  tooltip='Bounce back from the edges of the screen?')]

        bounce_checkbox_line = [] if bounce is None else \
                               [sg.Checkbox('Bounce?', key='Bounce?', default=bounce, pad=((20, 0), (10, 0)),
                                            tooltip='Bounce back from the edges of the screen?')]

        clear_line += bounce_checkbox_line

        # Always an fps combo box, but make it visible only if the user specifies such a box.
        # The box is necessary to allow the program to set fps even if the end user doesn't
        fps_combo_line = [
            sg.Text('Frames/second',
                    tooltip='The maximum frames/second.',
                    visible=bool(fps),
                    pad=((0, 10), (17, 0))),
            sg.Combo(key=gui.FPS,
                     values=FPS_VALUES,
                     tooltip='The maximum frames/second.',
                     default_value=fps,
                     visible=bool(fps),
                     pad=((0, 0), (17, 0)),
                     enable_events=True)
        ]

        setup_go_line = [
            sg.Button(self.SETUP, pad=((0, 10), (10, 0))),
            sg.Button(gui.GO_ONCE,
                      disabled=True,
                      button_color=('white', 'green'),
                      pad=((0, 10), (10, 0))),
            sg.Button(gui.GO,
                      disabled=True,
                      button_color=('white', 'green'),
                      pad=((0, 30), (10, 0)),
                      key=gui.GOSTOP)
        ]

        exit_button_line = [
            sg.Exit(button_color=('white', 'firebrick4'),
                    key=self.EXIT,
                    pad=((0, 0), (10, 0))),
            sg.Checkbox('Grab anywhere',
                        key='Grab',
                        default=False,
                        pad=((40, 0), (10, 0)))
        ]

        col1 = [
            *gui_left_upper,
            gui.HOR_SEP(), setup_go_line, clear_line, fps_combo_line,
            gui.HOR_SEP(), exit_button_line
        ]

        lower_left_pixel_xy = (0, self.screen_shape_width_height[1] - 1)
        upper_right_pixel_xy = (self.screen_shape_width_height[0] - 1, 0)

        if gui_right_upper is None:
            gui_right_upper = [[]]

        # graph is a drawing area, a screen on which the model is portrayed, i.e., the patches and the agents.
        # It consists mainly of a TKCanvas.
        graph = sg.Graph(self.screen_shape_width_height,
                         lower_left_pixel_xy,
                         upper_right_pixel_xy,
                         background_color='black',
                         key='-GRAPH-',
                         enable_events=True,
                         drag_submits=True)
        col2 = gui_right_upper + [[graph]]

        # layout is the actual layout of the window. The stuff above organizes it into component parts.
        # col1 is the control buttons, sliders, etc.
        # col2 is the graph plus whatever the user wants to put above it.
        # layout is a single "GUI line" with these two components in sequence.
        layout = [[sg.Column(col1), sg.Column(col2)]]

        # window is a window with that layout.
        window = sg.Window(caption,
                           layout,
                           margins=(5, 20),
                           use_default_focus=False,
                           grab_anywhere=False,
                           return_keyboard_events=True,
                           finalize=True)

        # -------------- Magic code to integrate PyGame with tkinter -------
        w_id = graph.TKCanvas.winfo_id()
        os.environ['SDL_WINDOWID'] = str(w_id)
        os.environ[
            'SDL_VIDEODRIVER'] = 'windib'  # change this to 'x11' to make it work on Linux

        return window