def set_layout(self): """sets the layout of the entire GUI""" template = self.settings[defaults._template] source_dir = self.settings[defaults._source_dir] target_dir = self.settings[defaults._target_dir] operation = self.settings[defaults._operation] excludes = self.settings[defaults._excludes] includes = self.settings[defaults._includes] player_id = self.settings[defaults._player_id] tray = self.settings[defaults._tray] first_column_width = 30 third_column_width = 50 button_width = 9 inner_space = 0.6 radio_copy = sg.Radio('Copy', 'operation_group', key=defaults._copy) radio_move = sg.Radio('Move', 'operation_group', key=defaults._move) if operation == defaults._move: radio_move = sg.Radio('Move', 'operation_group', key=defaults._move, default=True) self.layout = [ # Rename Operations [sg.Text('Rename Operations', font='Arial 12 bold')], [sg.Text('Rename Template', size=(first_column_width, 3)), sg.Multiline(default_text=template, size=(third_column_width, 3), do_not_clear=True, key=defaults._template)], [sg.Text('Replay Folder', size=(first_column_width, 1)), sg.InputText(default_text=source_dir, key=defaults._source_dir, do_not_clear=True, size=(third_column_width - button_width - inner_space, 1), change_submits=True), sg.FolderBrowse("Browse", size=(button_width, 1), initial_folder=source_dir, target=defaults._source_dir, auto_size_button=False)], [sg.Text('Destination Folder', size=(first_column_width, 1)), sg.InputText(default_text=target_dir, key=defaults._target_dir, do_not_clear=True, size=(third_column_width - button_width - inner_space, 1), change_submits=True), sg.FolderBrowse("Browse", size=(button_width, 1), initial_folder=target_dir, target=defaults._target_dir, auto_size_button=False)], [sg.Text('Player ID', size=(first_column_width, 1)), sg.InputText(default_text=player_id, key=defaults._player_id, size=(third_column_width - button_width - inner_space, 1)), sg.Button('Detect', target=defaults._player_id, size=(button_width, 1), key='Detect', auto_size_button=False)], # File Operation [sg.Text('File Operation', size=(first_column_width, 1)), radio_copy, radio_move], # divider [sg.Text(' ')], # Exclusions [sg.Text('Exclusions', font='Arial 14 bold')], [sg.Checkbox('Exclude Games with AI', default=excludes[defaults._ai], key=defaults._ai)], [sg.Checkbox('Exclude Custom Games', default=excludes[defaults._custom], key=defaults._custom)], [sg.Text('Exclude directories (separate by comma)', size=(first_column_width, 1)), sg.InputText(default_text=excludes[defaults._exclude_dirs], size=(third_column_width, 1), key=defaults._exclude_dirs)], # divider [sg.Text(' ')], # Inclusions [sg.Text('Inclusions', font='Arial 14 bold')], [sg.Text('Minimum Number of Players', size=(first_column_width, 1)), sg.InputText(default_text=includes[defaults._min_players], key=defaults._min_players, size=(third_column_width, 1))], [sg.Text('Maximum Number of Players', size=(first_column_width, 1)), sg.InputText(default_text=includes[defaults._max_players], key=defaults._max_players, size=(third_column_width, 1))], [sg.Checkbox('WoL Replays', key=defaults._wol, default=includes[defaults._wol])], [sg.Checkbox('HotS Replays', key=defaults._hots, default=includes[defaults._hots])], [sg.Checkbox('LotV Replays', key=defaults._lotv, default=includes[defaults._lotv])], # divider [sg.Text(' ')], # Matchups [sg.Text('Matchups', font='Arial 14 bold')], [sg.Text('Exclude Matchups (separate by comma)', size=(first_column_width, 1)), sg.InputText(default_text=excludes[defaults._exclude_matchups], size=(third_column_width, 1), key=defaults._exclude_matchups)], [sg.Text('Include Matchups (separate by comma)', size=(first_column_width, 1)), sg.InputText(default_text=includes[defaults._include_matchups], size=(third_column_width, 1), key=defaults._include_matchups)], # divider [sg.Text(' ')], # System Tray [sg.Checkbox('Automatically rename new replay files', key='tray', default=tray)], # divider [sg.Text(' ')], # Final Buttons [sg.Button('Rename', key='Rename'), sg.Save(), sg.Button('Default', key='Default'), sg.Exit()] ]
# Функции и кнопки окон layout = [ [ sg.Text('Вас приветствует мобильное приложение библиотеки!', size=(150, 50)), ], [sg.Button('Поиск книги', size=(10, 50))], # [sg.Text('Enter something on Row 2'), sg.InputText()], # InputText - небольшое окно для ввода текста [sg.Button('Закрыть приложение')], #[sg.Button('')], [sg.Button('очко товарища')] ] # TODO доделать кнопки, понять как поставить местоположение текста и кнопок(выполняется) layout2 = [[ sg.Radio(text='вкл', default=True, group_id='aa'), sg.Radio(text='выкл', group_id='aa') ], [sg.Cancel()]] def win1(): # Создаем и открываем доп окна win1 = sg.Window('Сеть', layout2, no_titlebar=True, grab_anywhere=True, size=(120, 500)) while True: event, values = win1.read( timeout=200) # Пауза обновления окна в мc 0,2 сек if event == 'Закрыть приложение': break