def player_war_window(data: Dict, best_32: List[int], stats: Dict) -> sg.Window: """Player war window. Args: data (Dict): Dictionary with player information. best_32 (List): List with best 32 stats levels. stats (Dict): Dictionary with war stats. """ winrate = RoyaleApi.get_winrate(data["losses"], data["wins"]) / 100.0 base_fp = sum(best_32) est_fp = int(winrate * (2 * base_fp) + (1 - winrate) * base_fp) decks = [ [sg.T(f"Average level: {st.mean(best_32):.2f}")], [sg.T(f"Minimum daily WP: {base_fp}")], [sg.T(f"Maximum daily WP: {2 * base_fp}")], [sg.T(f"Estimated daily WP: {est_fp}")], [sg.HSep()], [sg.T(f"Minimum war WP: {7 * base_fp}")], [sg.T(f"Maximum war WP: {14 * base_fp}")], [sg.T(f"Estimated war WP: {7 * est_fp}")], ] war_stats = [ [sg.T(f"Total WP: {sum(stats['war_points']):.0f}")], [sg.T(f" \u21B3 FP: {sum(stats['fame_points']):.0f}")], [sg.T(f" \u21B3 RP: {sum(stats['repair_points']):.0f}")], [ sg. T(f"Average WP: {sum(stats['war_points']) / len(stats['war_points'])}" ) ], ] current_war = [ [sg.T(f"Current WP: {stats['current_war_points']}")], [sg.T(f" \u21B3 FP: {stats['current_fame_points']}")], [sg.T(f" \u21B3 RP: {stats['current_repair_points']}")], ] h = "WP: War Points\nFP: Fame Points\nRP: Repair Points" layout = [ [ sg.Col([ [ cw.F("Best 32 cards", decks), sg.Col([ [cw.F("War stats", war_stats)], [cw.F("Current war", current_war)], ]), ], ]) ], [sg.B("\u2190"), sg.HSep(), sg.T("[?]", tooltip=h)], ] return sg.Window(TITLE, layout)
def create_window(): layout = [ [ sg.Canvas(key='controls_cv'), sg.B('Grid on/off'), sg.HSep(), #sg.InputText(key='node_txt'), sg.MLine(change_submits=True, autoscroll=True, visible=True, do_not_clear=True, key="node_txt"), sg.InputText(default_text=0.05, key='round_base', change_submits=True, size=(10, 10), tooltip="set grid spacing"), sg.B('snap to grid'), sg.HSep(), sg.B('LOAD MindMap'), sg.B('SAVE MindMap'), sg.B('Exit'), ], [ sg.Column( layout=[[ sg.Canvas( key='fig_cv', # it's important that you set this size size=(window_width, window_height)) ]], background_color='#DAE0E6', pad=(0, 0)) ], [ sg.B('New MindMap'), sg.T('Matplotlib Style:'), sg.Combo(plt.style.available, default_value=default_style, size=(15, 10), key='-STYLE-'), sg.HSep(), sg.B('Set GUI theme'), sg.T('GUI Theme:'), sg.Combo(sg.theme_list(), default_value=default_theme, size=(15, 10), key='-THEME-') ] ] window = sg.Window('Graph with controls', layout, finalize=True) return window
_BROWSE_BTN = sg.B(button_type=sg.BUTTON_TYPE_BROWSE_FOLDER, image_data=icons.FOLDER, button_color=_BTN_COLOR, border_width=0, target='-IN-', tooltip=BROWSE_TOOLTIP) _START_BTN = sg.B(button_type=sg.BUTTON_TYPE_READ_FORM, image_data=icons.START, button_color=_BTN_COLOR, border_width=0, tooltip=START_TOOLTIP, key="-START_BTN-") _H_SEP = sg.HSep(p=((10, 10), (20, 10))) _INPUT = sg.In(default_text=settings.get('-IN-', ''), key='-IN-', size=(30, 4), font=_MSG_FONT) _SUBDIR_CHECK = sg.CB(text=SUBDIR_CHECK, default=settings.get('-SUBDIR_CHECK-', False), tooltip=SUBDIR_CHECK_TOOLTIP, key='-SUBDIR_CHECK-') _CONFIG_BTN = sg.B(image_data=icons.CONFIGURE, button_color=_BTN_COLOR, border_width=0, tooltip=CONFIGURE_TOOLTIP,
def make_window(theme=None): NAME_SIZE = 23 def name(name): dots = NAME_SIZE - len(name) - 2 return sg.Text(name + ' ' + '•' * dots, size=(NAME_SIZE, 1), justification='r', pad=(0, 0), font='Courier 10') sg.theme(theme) # NOTE that we're using our own LOCAL Menu element if use_custom_titlebar: Menu = sg.MenubarCustom else: Menu = sg.Menu treedata = sg.TreeData() treedata.Insert( "", '_A_', 'Tree Item 1', [1234], ) treedata.Insert("", '_B_', 'B', []) treedata.Insert( "_A_", '_A1_', 'Sub Item 1', ['can', 'be', 'anything'], ) layout_l = [ [name('Text'), sg.Text('Text')], [name('Input'), sg.Input(s=15)], [name('Multiline'), sg.Multiline(s=(15, 2))], [name('Output'), sg.Output(s=(15, 2))], [ name('Combo'), sg.Combo(sg.theme_list(), default_value=sg.theme(), s=(15, 22), enable_events=True, readonly=True, k='-COMBO-') ], [name('OptionMenu'), sg.OptionMenu([ 'OptionMenu', ], s=(15, 2))], [name('Checkbox'), sg.Checkbox('Checkbox')], [name('Radio'), sg.Radio('Radio', 1)], [name('Spin'), sg.Spin([ 'Spin', ], s=(15, 2))], [name('Button'), sg.Button('Button')], [ name('ButtonMenu'), sg.ButtonMenu('ButtonMenu', sg.MENU_RIGHT_CLICK_EDITME_EXIT) ], [name('Slider'), sg.Slider((0, 10), orientation='h', s=(10, 15))], [ name('Listbox'), sg.Listbox(['Listbox', 'Listbox 2'], no_scrollbar=True, s=(15, 2)) ], [name('Image'), sg.Image(sg.EMOJI_BASE64_HAPPY_THUMBS_UP)], [name('Graph'), sg.Graph((125, 50), (0, 0), (125, 50), k='-GRAPH-')] ] layout_r = [ [ name('Canvas'), sg.Canvas(background_color=sg.theme_button_color()[1], size=(125, 40)) ], [ name('ProgressBar'), sg.ProgressBar(100, orientation='h', s=(10, 20), k='-PBAR-') ], [ name('Table'), sg.Table([[1, 2, 3], [4, 5, 6]], ['Col 1', 'Col 2', 'Col 3'], num_rows=2) ], [name('Tree'), sg.Tree(treedata, [ 'Heading', ], num_rows=3)], [name('Horizontal Separator'), sg.HSep()], [name('Vertical Separator'), sg.VSep()], [name('Frame'), sg.Frame('Frame', [[sg.T(s=15)]])], [name('Column'), sg.Column([[sg.T(s=15)]])], [ name('Tab, TabGroup'), sg.TabGroup( [[sg.Tab('Tab1', [[sg.T(s=(15, 2))]]), sg.Tab('Tab2', [[]])]]) ], [ name('Pane'), sg.Pane([sg.Col([[sg.T('Pane 1')]]), sg.Col([[sg.T('Pane 2')]])]) ], [name('Push'), sg.Push(), sg.T('Pushed over')], [name('VPush'), sg.VPush()], [name('Sizer'), sg.Sizer(1, 1)], [name('StatusBar'), sg.StatusBar('StatusBar')], [name('Sizegrip'), sg.Sizegrip()] ] # Note - LOCAL Menu element is used (see about for how that's defined) layout = [[ Menu([['File', ['Exit']], ['Edit', [ 'Edit Me', ]]], k='-CUST MENUBAR-', p=0) ], [ sg.T('PySimpleGUI Elements - Use Combo to Change Themes', font='_ 14', justification='c', expand_x=True) ], [ sg.Checkbox('Use Custom Titlebar & Menubar', use_custom_titlebar, enable_events=True, k='-USE CUSTOM TITLEBAR-', p=0) ], [sg.Col(layout_l, p=0), sg.Col(layout_r, p=0)]] window = sg.Window('The PySimpleGUI Element List', layout, finalize=True, right_click_menu=sg.MENU_RIGHT_CLICK_EDITME_VER_EXIT, keep_on_top=True, use_custom_titlebar=use_custom_titlebar) window['-PBAR-'].update(30) # Show 30% complete on ProgressBar window['-GRAPH-'].draw_image( data=sg.EMOJI_BASE64_HAPPY_JOY, location=(0, 50)) # Draw something in the Graph Element return window