예제 #1
0
    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)
예제 #2
0
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
예제 #3
0
_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