Beispiel #1
0
def make_window():
    config = get_config()
    message = config["EMAIL"]["message"]
    adress = config["EMAIL"]["adress"]
    server = config["EMAIL"]["server"]
    port = config["EMAIL"]["port"]
    username = config["EMAIL"]["username"]
    password = config["EMAIL"]["password"]
    delivery_link = config["EMAIL"]["delivery_link"]

    navigator_column = [
        [
            sg.Col([[
                sg.Text("General",
                        enable_events=True,
                        key="-general-",
                        pad=((20, 5), (5, 5))),
            ]],
                   expand_x=True,
                   pad=((0, 0), (0, 0))),
        ],
        [
            sg.Col([[
                sg.Text("JSON/Ads",
                        enable_events=True,
                        key="-json-",
                        pad=((20, 5), (5, 5))),
            ]],
                   expand_x=True,
                   pad=((0, 0), (0, 0))),
        ],
        [
            sg.Col([[
                sg.Text("Email",
                        background_color="darkgrey",
                        enable_events=True,
                        key="-email-",
                        pad=((20, 5), (5, 5))),
            ]],
                   background_color="darkgrey",
                   expand_x=True,
                   pad=((0, 0), (0, 0))),
        ],
        [
            sg.Col([[
                sg.Text("After Effects",
                        enable_events=True,
                        key="-AE-",
                        pad=((20, 5), (5, 5))),
            ]],
                   expand_x=True,
                   pad=((0, 0), (0, 0))),
        ],
        [
            sg.Col([[
                sg.Text("Server Incoming",
                        size=(20, 1),
                        enable_events=True,
                        key="-incoming-",
                        pad=((20, 5), (10, 5))),
            ]],
                   expand_x=True,
                   pad=((0, 0), (0, 0))),
        ],
        [
            sg.Col([[
                sg.Text("Server delivery",
                        enable_events=True,
                        key="-delivery-",
                        pad=((20, 5), (5, 5))),
            ]],
                   expand_x=True,
                   pad=((0, 0), (0, 0))),
        ],
        [
            sg.Col([[
                sg.B('Back',
                     pad=((20, 10), (250, 0)),
                     button_color=("white", "black"))
            ]],
                   expand_x=True,
                   pad=((0, 0), (0, 20))),
        ],
    ]

    def create_Text(txt):
        return sg.T(txt, background_color="black", text_color="white")

    info_column = [[
        sg.T("Available Varaibales:"),
        sg.Column([[
            create_Text("FirstName"),
            create_Text("LastName"),
            create_Text("FileLink")
        ], [create_Text("ExpiryDate"),
            create_Text("Reference")]],
                  pad=((0, 0), (5, 0)),
                  vertical_alignment="t"),
    ], [sg.Text("Mesage:")],
                   [sg.Multiline(
                       message,
                       key="message",
                       size=(52, 10),
                   )],
                   [
                       sg.T("Email Adress:", pad=((27, 5), (10, 10))),
                       sg.I(adress, key="adress", size=(37, 1))
                   ],
                   [
                       sg.T("SMTP server:", pad=((27, 5), (10, 10))),
                       sg.I(server, key="server", size=(20, 1)),
                       sg.T("Port:"),
                       sg.I(port, key="port", size=(9, 1))
                   ],
                   [
                       sg.T("SMTP Username:"******"username", size=(38, 1))
                   ],
                   [
                       sg.T("SMTP Passord:", pad=((18, 5), (10, 10))),
                       sg.I(password,
                            key="password",
                            size=(38, 1),
                            password_char="*")
                   ],
                   [
                       sg.T("Delivery Path:", pad=((15, 5), (10, 10))),
                       sg.I(delivery_link, key="delivery_link", size=(38, 1))
                   ], [sg.Text(pad=((405, 5), (20)))],
                   [sg.B("save", pad=((350, 0), (20, 0)))]]
    # ----- Full layout -----
    layout = [[
        sg.Column(navigator_column,
                  vertical_alignment="t",
                  pad=((0, ), (15, 5))),
        sg.VSeperator(pad=(
            (0, 0),
            (0, 0),
        ), color="black"),
        sg.Column(info_column, vertical_alignment="t", pad=((30, 5), (15, 5))),
    ]]
    # Create the window
    window = sg.Window("Settings", layout, margins=(0, 0), icon=apg_logo)
    return window
Beispiel #2
0
def make_window():
    config = get_config()
    logo = config["APP"]['logo']
    logo = logo if logo else "FILENAME SHOW HERE.jpg"
    online_availability = config["GENERAL"]["online_availability_duration"]
    master_availability = config["GENERAL"]["master_availability_duration"]
    sync_interval = config["GENERAL"]["sync_interval"]
    navigator_column = [
        [
            sg.Col([[
                sg.Text("General",
                        background_color="darkgrey",
                        enable_events=True,
                        key="-general-",
                        pad=((20, 5), (5, 5))),
            ]],
                   background_color="darkgrey",
                   expand_x=True,
                   pad=((0, 0), (0, 0))),
        ],
        [
            sg.Col([[
                sg.Text("JSON/Ads",
                        enable_events=True,
                        key="-json-",
                        pad=((20, 5), (5, 5))),
            ]],
                   expand_x=True,
                   pad=((0, 0), (0, 0))),
        ],
        [
            sg.Col([[
                sg.Text("Email",
                        enable_events=True,
                        key="-email-",
                        pad=((20, 5), (5, 5))),
            ]],
                   expand_x=True,
                   pad=((0, 0), (0, 0))),
        ],
        [
            sg.Col([[
                sg.Text("After Effects",
                        enable_events=True,
                        key="-AE-",
                        pad=((20, 5), (5, 5))),
            ]],
                   expand_x=True,
                   pad=((0, 0), (0, 0))),
        ],
        [
            sg.Col([[
                sg.Text("Server Incoming",
                        size=(20, 1),
                        enable_events=True,
                        key="-incoming-",
                        pad=((20, 5), (10, 5))),
            ]],
                   expand_x=True,
                   pad=((0, 0), (0, 0))),
        ],
        [
            sg.Col([[
                sg.Text("Server delivery",
                        enable_events=True,
                        key="-delivery-",
                        pad=((20, 5), (5, 5))),
            ]],
                   expand_x=True,
                   pad=((0, 0), (0, 0))),
        ],
        [
            sg.Col([[
                sg.B('Back',
                     pad=((20, 10), (250, 0)),
                     button_color=("white", "black"),
                     highlight_colors=("red", "green"),
                     use_ttk_buttons=False)
            ]],
                   expand_x=True,
                   pad=((0, 0), (0, 20))),
        ],
    ]

    info_column = [[
        sg.Text("Upload Logo: "),
        sg.Text(
            logo,
            key="-logo-",
            size=(50, 1),
        ),
        sg.FileBrowse("Select", ),
        sg.T(pad=((8, 0)))
    ], [sg.Text(pad=((405, 5), (0, 170)))],
                   [
                       sg.Text("Availability of File online:",
                               pad=((10, 5), (5, 5))),
                       sg.I(size=(10, 1), default_text=online_availability),
                       sg.T("Days")
                   ],
                   [
                       sg.Text("Availability of Master Files:",
                               pad=((0, 5), (5, 5))),
                       sg.I(size=(10, 1), default_text=master_availability),
                       sg.T("Days")
                   ],
                   [
                       sg.Text("Sync Interval FTP:", pad=((37, 5), (5, 5))),
                       sg.I(size=(10, 1), default_text=sync_interval),
                       sg.T("Minutes")
                   ], [sg.T(pad=((0, 380), (70, 0)))],
                   [sg.B("save", pad=((400, 20), (20, 0)))]]
    # ----- Full layout -----
    layout = [[
        sg.Column(navigator_column,
                  vertical_alignment="t",
                  pad=((0, ), (15, 5))),
        sg.VSeperator(pad=(
            (0, 0),
            (0, 0),
        ), color="black"),
        sg.Column(
            info_column,
            vertical_alignment="t",
            pad=((40, 0), (15, 5)),
        ),
    ]]

    # Create the window
    window = sg.Window("Settings", layout, margins=(0, 0), icon=apg_logo)
    return window
Beispiel #3
0
                     layout, key=key, visible=not collapsed, metadata=arrows))
         ]],
        pad=(0, 0))


SEC1_KEY = '-SECTION1-'
SEC2_KEY = '-SECTION2-'

section1 = [[sg.Input('Input sec 1', key='-IN1-')], [sg.Input(key='-IN11-')],
            [
                sg.Button('Button section 1', button_color='yellow on green'),
                sg.Button('Button2 section 1', button_color='yellow on green'),
                sg.Button('Button3 section 1', button_color='yellow on green')
            ]]

section2 = [[sg.I('Input sec 2', k='-IN2-')], [sg.I(k='-IN21-')],
            [
                sg.B('Button section 2', button_color=('yellow', 'purple')),
                sg.B('Button2 section 2', button_color=('yellow', 'purple')),
                sg.B('Button3 section 2', button_color=('yellow', 'purple'))
            ]]

layout = [
    [sg.Text('Window with 2 collapsible sections')],
    [
        sg.Checkbox('Blank checkbox'),
        sg.Checkbox('Hide Section 2',
                    enable_events=True,
                    key='-OPEN SEC2-CHECKBOX-')
    ],
    #### Section 1 part ####
Beispiel #4
0
 ],
 [
     sg.T('Status5', size=(12, 1)),
     sg.Text(CIRCLE_OUTLINE,
             size=(10, 1),
             font='Default 18',
             text_color='green',
             key='-OUT5-')
 ],
 [
     sg.Frame('Unicode Converter',
              [[
                  sg.T('Enter a Number'),
                  sg.In(size=(6, 1), key='-NUM-'),
                  sg.T('Unicode char: '),
                  sg.I(size=(2, 1), font='Any 18', key='-OUT CHAR-')
              ],
               [
                   sg.T('Enter a Char'),
                   sg.In(size=(2, 1), key='-CHAR-', font='Any 18'),
                   sg.T('Unicode number: '),
                   sg.T(size=(6, 1), key='-OUT NUM-')
               ]])
 ],
 [
     sg.Frame('Display Unicode Characters In Range', [
         [
             sg.T('Starting Number'),
             sg.In(size=(6, 1), key='-START-'),
             sg.T('Ending Number char: '),
             sg.I(size=(6, 1), key='-END-')
Beispiel #5
0
ADD_BUTTON_COLOR = ('white', '#008000')
CHANGE_BUTTON_COLOR = ('black', '#ffd700')
DELETE_BUTTON_COLOR = ('black', '#ff4040')

nutrition_layout = [
    [
        sg.T('Week', size=NUTRITION_LABEL_SIZE),
        sg.InputCombo(tuple(), key='-WEEK-', size=NUM_INPUT_SIZE)
    ],
    [
        sg.T('Food', size=NUTRITION_LABEL_SIZE),
        sg.InputCombo(tuple(), key='-FOOD-', font=('Any', 9), size=TEXT_INPUT_SIZE)
    ],
    [
        sg.T('Calories', size=NUTRITION_LABEL_SIZE),
        sg.I(key='-KCAL-', size=NUM_INPUT_SIZE)
    ],
    [
        sg.T('Protein', size=NUTRITION_LABEL_SIZE),
        sg.I(key='-PROTEIN-', size=NUM_INPUT_SIZE)
    ],
    [
        sg.B(
            'Add Food',
            size=BUTTON_SIZE,
            button_color=ADD_BUTTON_COLOR,
            tooltip='Adds a new food to the database, with its calories and protein.'
        ),
        sg.B(
            'Add Week',
            size=BUTTON_SIZE,
def GUI():
    # Random theme for GUI
    theme = random.choice(sg.theme_list())
    sg.theme(theme)  # A touch of color
    SYMBOL_UP = '▲'
    SYMBOL_DOWN = '▼'

    def collapse(layout, key):
        return sg.pin(sg.Column(layout, key=key))

    section_train = [
        [
            sg.Text('input training raster',
                    size=(15, 1),
                    font=("Helvetica"),
                    auto_size_text=False,
                    justification='left',
                    tooltip="Path for input raster for training"),
            sg.InputText(),
            sg.FileBrowse()
        ],
        [
            sg.Text('train feature',
                    size=(15, 1),
                    font=("Helvetica"),
                    auto_size_text=False,
                    justification='left',
                    tooltip="Path for train feature"),
            sg.InputText(),
            sg.FileBrowse()
        ],
        [
            sg.Text('result path',
                    size=(15, 1),
                    font=("Helvetica"),
                    auto_size_text=False,
                    justification='left',
                    tooltip="Path where to store the trained model"),
            sg.InputText(),
            sg.FolderBrowse()
        ],
        [
            sg.Text('number of trees',
                    font=("Helvetica"),
                    tooltip="Number of trees"),
            sg.InputText("200", size=(10, 1))
        ],
        [
            sg.Text('max depth',
                    font=("Helvetica"),
                    tooltip="Max number of trees depth"),
            sg.InputText("25", size=(10, 1))
        ],
        [
            sg.Text('max numer of samples per class',
                    font=("Helvetica"),
                    tooltip="Max number of samples per class"),
            sg.InputText("1000", size=(10, 1))
        ],
    ]

    section_inference = [
        [
            sg.Text('raster to classify',
                    size=(15, 1),
                    font=("Helvetica"),
                    auto_size_text=False,
                    justification='left',
                    tooltip="the raster you want to classify"),
            sg.InputText(),
            sg.FileBrowse()
        ],
        [
            sg.Text('output raster',
                    size=(15, 1),
                    font=("Helvetica"),
                    auto_size_text=False,
                    justification='left',
                    tooltip="Path to store the classified raster"),
            sg.InputText(),
            sg.FileBrowse()
        ],
        [
            sg.Text(
                'model path(optional)',
                size=(16, 1),
                font=("Helvetica"),
                auto_size_text=False,
                justification='left',
                tooltip=
                "Path for trained model, required when result path not provided"
            ),
            sg.InputText(),
            sg.FileBrowse()
        ],
    ]

    section1 = [[sg.Input('Input sec 1', key='-IN1-')],
                [sg.Input(key='-IN11-')],
                [
                    sg.Button('Button section 1',
                              button_color='yellow on green'),
                    sg.Button('Button2 section 1',
                              button_color='yellow on green'),
                    sg.Button('Button3 section 1',
                              button_color='yellow on green')
                ]]

    section2 = [[sg.I('Input sec 2', k='-IN2-')], [sg.I(k='-IN21-')],
                [
                    sg.B('Button section 2',
                         button_color=('yellow', 'purple')),
                    sg.B('Button2 section 2',
                         button_color=('yellow', 'purple')),
                    sg.B('Button3 section 2',
                         button_color=('yellow', 'purple'))
                ]]

    layout = [[
        sg.T(SYMBOL_DOWN,
             enable_events=True,
             k='-OPEN SEC1-',
             text_color='yellow'),
        sg.T('Train',
             enable_events=True,
             text_color='yellow',
             k='-OPEN SEC1-TEXT')
    ], [collapse(section_train, '-SEC1-')],
              [
                  sg.T(SYMBOL_DOWN,
                       enable_events=True,
                       k='-OPEN SEC2-',
                       text_color='purple'),
                  sg.T('Inference',
                       enable_events=True,
                       text_color='purple',
                       k='-OPEN SEC2-TEXT')
              ], [collapse(section_inference, '-SEC2-')],
              [
                  sg.Button('OK',
                            font=("Helvetica", 15),
                            tooltip='Click to submit this window'),
                  sg.Cancel(font=("Helvetica", 15))
              ]]

    window = sg.Window('Random forest classifier for remote sensed data',
                       layout)

    opened1, opened2 = True, True

    event = None
    while True:  # Event Loop
        event, values = window.read()
        print(event, values)
        if event == sg.WIN_CLOSED or event == 'Cancel':
            os._exit(1)
        elif event == 'OK':
            break

        if event.startswith('-OPEN SEC1-'):
            opened1 = not opened1
            window['-OPEN SEC1-'].update(SYMBOL_DOWN if opened1 else SYMBOL_UP)
            window['-SEC1-'].update(visible=opened1)

        if event.startswith('-OPEN SEC2-'):
            opened2 = not opened2
            window['-OPEN SEC2-'].update(SYMBOL_DOWN if opened2 else SYMBOL_UP)
            # window['-OPEN SEC2-CHECKBOX'].update(not opened2)
            window['-SEC2-'].update(visible=opened2)

    window.close()
    return [values[i] for i in values]
Beispiel #7
0
def MyInput(key): return sg.I('', size=(3, 1), key=key, pad=(0, 2))


layout = [[sg.T('Your typed chars appear here:'), sg.T('', key='-OUTPUT-')],
Beispiel #8
0
    def layout(self):
        üyelersekme = eval(self.üyeTablosu(üyeler, "Üyeler"))
        ayarlarsekme = [
            [
                sg.T('Önceki nöbet listelerinin olduğu dizin:'),
                sg.I(default_text=çlşDiz),
                sg.FolderBrowse(key="çlşDiz",
                                tooltip="Klasör seçme penceresi açılır",
                                button_text="Klasör Aç")
            ],
            [
                sg.I(
                    key="yıl",
                    default_text=str(yıl),
                    size=(4, 4),
                ),
                sg.T(" yılı "),
                sg.I(
                    key="ay",
                    default_text=str(ay),
                    size=(2, 4),
                ),
                sg.T(" ayı için nöbet oluşturulacak."),
            ],
            [
                sg.I(
                    key="aralık",
                    default_text=str(self.aralık),
                    size=(1, 4),
                ),
                sg.T(' gün aralıkla nöbet verilir')
            ],
            [
                sg.T('Verilebilecek ek nöbet sayısı: '),
                sg.I(
                    key="ek",
                    default_text=str(self.ek),
                    size=(1, 4),
                )
            ],
        ]
        işlenentablolartab = [[
            sg.Multiline(size=(30, 20), key="işlenentablo", autoscroll=True)
        ]]
        çıktıtab = [[
            sg.Multiline(size=(30, 20), key="çıktı", autoscroll=True)
        ]]
        sonuçtab = [[
            sg.Multiline(size=(30, 20), key="sonuç", autoscroll=True)
        ]]
        eşleşmeyentab = [[
            sg.Multiline(size=(30, 20), key="eşleşmeyen", autoscroll=True)
        ]]
        sekmegurubu = [
            sg.TabGroup([[
                sg.Tab('AYARLAR', ayarlarsekme),
                sg.Tab('ÜYELER', üyelersekme),
                sg.Tab('İŞLENEN TABLOLAR', işlenentablolartab),
                sg.Tab('ÇIKTI', çıktıtab),
                sg.Tab('SONUÇ', sonuçtab),
                sg.Tab('EŞLEŞMEYEN', eşleşmeyentab),
            ]])
        ]
        eylembutonları = [sg.B("Tabloları Tara"), sg.B("Yarat"), sg.B("Çıkış")]

        layout = [sekmegurubu, eylembutonları]
        return layout
Beispiel #9
0
        def create_border_options():
            """Create layout for the world border tab.

            Contains all the available options for the modification of the world
            border.
            """
            logging.debug("Creating world border layout")
            layout = [[
                sg.Frame("Border center", [[
                    sg.T("X"),
                    sg.I("0", (19, 1), key="border_x"),
                    sg.T("Z"),
                    sg.I("0", (19, 1), key="border_z")
                ]])
            ]]
            col1_layout = [[
                sg.Frame("Border size", [
                    [
                        sg.T("Initial size", (8, 1)),
                        sg.I("60000000", (10, 1),
                             key="border_size",
                             justification="right")
                    ],
                    [
                        sg.T("Final size", (8, 1)),
                        sg.I("60000000", (10, 1),
                             key="border_size_target",
                             justification="right")
                    ],
                    [
                        sg.T(
                            "Lerp time", (8, 1),
                            tooltip="Seconds until border reaches final size"),
                        sg.I("0", (10, 1),
                             key="border_lerp_time",
                             justification="right")
                    ]
                ])
            ]]
            col2_layout = [[
                sg.T("Damage", (11, 1), tooltip="Damage per block"),
                sg.Spin([str(x / 10) for x in range(201)],
                        "0.2",
                        size=(7, 1),
                        key="border_damage")
            ]]
            col2_layout += [[
                sg.T("Safe distance", (11, 1), tooltip="Blocks beyond border"),
                sg.I("5", (8, 1),
                     key="border_safe_blocks",
                     justification="right")
            ]]
            col2_layout += [[
                sg.T("Warning time", (11, 1)),
                sg.I("15", (8, 1),
                     key="border_warn_time",
                     justification="right")
            ]]
            col2_layout += [[
                sg.T("Warning blocks", (11, 1)),
                sg.I("5", (8, 1),
                     key="border_warn_blocks",
                     justification="right")
            ]]
            layout += [[
                sg.Col(col2_layout, pad=(0, 0)),
                sg.Col(col1_layout, pad=(0, 0))
            ]]
            return layout
Beispiel #10
0
radios = Radios(config.get("Settings", "radio_list"))
fav_radios = Radios("favourites.dat", remote=False)
fav_radios.filter()
radios.filter()

fav_layout = [[
    sg.Col(
        layout=[[
            sg.Col(layout=[[
                sg.Frame("Add Radio Station",
                         [[
                             sg.Col(
                                 [
                                     [
                                         sg.T("Name"),
                                         sg.I(key="_add_radio_name_",
                                              size=(35, 1)),
                                         sg.T("Genre"),
                                         sg.I(key="_add_radio_genre_",
                                              size=(15, 1)),
                                         sg.T("Country"),
                                         sg.I(key="_add_radio_country_",
                                              size=(15, 1))
                                     ],
                                 ],
                                 justification="r",
                                 element_justification="l",
                                 expand_x=True,
                             ),
                         ],
                          [
                              sg.Col([[
Beispiel #11
0
    else:
        print(
            "You either didn't select files or didn't enter result file name!!!\n"
        )


en = 'English words only.'
ar_msa = 'Arabic words without diacritics (Harakat).'
punc = 'Remove punctuations and special characters.'
layout = [[
    sg.Text("Choose folder:",
            font='Courier 14',
            auto_size_text=True,
            size=(22, 1),
            justification='right'),
    sg.I(key='-INPUT-', size=(55, 1)),
    sg.FolderBrowse()
],
          [
              sg.T("Choose output location:",
                   font='Courier 14',
                   auto_size_text=True,
                   size=(22, 1)),
              sg.I(key='-OUTPUT-', size=(55, 1)),
              sg.FileSaveAs()
          ],
          [
              sg.B("Start!", key='-START-', font='Courier 12'),
              sg.Radio('English', group_id='lang', tooltip=en,
                       key='-ENGLISH-'),
              sg.Radio('Arabic MSA',
Beispiel #12
0
    ['Über', 'TaRen'],
]

def_taren = [
    [
        sg.T('Ausgabe:'),
        sg.T('', size=(width_Field, 1)),
        sg.B('Start', key='-btn-start-')
    ],
    [sg.Multiline(size=(2 * width_Field, 20), key='-result-')],
]

def_conf = [
    [
        sg.T('Download Verzeichnis', size=(width_Label, 1)),
        sg.I(key='-downloads-', size=(width_Field, 1), enable_events=True),
        sg.FolderBrowse('...')
    ],  # sg.B('...', key='-btn-dir-')],
    [
        sg.T('Dateiendung Film', size=(width_Label, 1)),
        sg.I(key='-extension-', size=(width_Field, 1))
    ],
    [
        sg.T('Name Logfile', size=(width_Label, 1)),
        sg.I(key='-logfile-', size=(width_Field, 1))
    ],
    [
        sg.T('Loggingstring', size=(width_Label, 1)),
        sg.I(key='-logstring-', size=(width_Field, 1))
    ],
    [
Beispiel #13
0
exit()

#   .d8888b.                888          888
#  d88P  Y88b               888          888
#  Y88b.                    888          888
#   "Y888b.   888  888  .d88888  .d88b.  888  888 888  888
#      "Y88b. 888  888 d88" 888 d88""88b 888 .88P 888  888
#        "888 888  888 888  888 888  888 888888K  888  888
#  Y88b  d88P Y88b 888 Y88b 888 Y88..88P 888 "88b Y88b 888
#   "Y8888P"   "Y88888  "Y88888  "Y88P"  888  888  "Y88888

sg.Window('Sudoku', [[
    sg.Frame('', [[
        sg.I(random.randint(1, 9),
             justification='r',
             size=(3, 1),
             key=(frow * 3 + row, fcol * 3 + col)) for col in range(3)
    ] for row in range(3)]) for fcol in range(3)
] for frow in range(3)] + [[sg.B('Exit')]]).read()

exit()

#         d8888                                          888       888 d8b
#        d88888                                          888   o   888 Y8P
#       d88P888                                          888  d8b  888
#      d88P 888 .d8888b  888  888 88888b.   .d8888b      888 d888b 888 888 88888b.
#     d88P  888 88K      888  888 888 "88b d88P"         888d88888b888 888 888 "88b
#    d88P   888 "Y8888b. 888  888 888  888 888           88888P Y88888 888 888  888
#   d8888888888      X88 Y88b 888 888  888 Y88b.         8888P   Y8888 888 888  888
#  d88P     888  88888P'  "Y88888 888  888  "Y8888P      888P     Y888 888 888  888
#                             888
Beispiel #14
0
    window["_BAR_"].UpdateBar(percent)


# Converts MP4 youtube file into MP3 File
def convert(video, audio):
    videoClip = VideoFileClip(video)
    audioClip = videoClip.audio
    audioClip.write_audiofile(audio)
    audioClip.close()
    videoClip.close()


# sg.ChangeLookAndFeel('DarkRed1')
# sg.SetGlobalIcon('logo.ico')

layout = [[sg.T("Tuby")], [sg.T("URL")], [sg.I(key="_URL_", size=(42, 18))],
          [sg.T("File Name")], [sg.I(key="_FILE_", size=(42, 18))],
          [sg.T("Destination")],
          [sg.FolderBrowse(),
           sg.I(" ", key="_FOLDER_", size=(34, 18))],
          [
              sg.Radio("MP3", group_id="FORMAT", default=True, key="_FORMAT_"),
              sg.Radio("MP4", group_id="FORMAT")
          ], [sg.B("Download", size=(42, 1))],
          [
              sg.ProgressBar(max_value=100,
                             orientation="horizontal",
                             key="_BAR_",
                             size=(36, 25))
          ]]
window = sg.Window('Tuby',
Beispiel #15
0
     sg.Input(key='_input_file_', default_text=st.gui_default_input_path),
     sg.FileBrowse(),
     sg.VSep(),
     sg.Input(key='_folder_', default_text=st.gui_default_audio_folder),
     sg.FolderBrowse()
 ],
 # Row 3 - range
 [
     sg.Text(" " * 20),
     sg.Text('Select spreadsheet range (for Excel files):')
 ],
 [
     sg.T(" " * 10),
     sg.T('Column:'),
     sg.I(default_text="C",
          size=(2, None),
          key='_column_',
          enable_events=True),
     sg.T('First Row:'),
     sg.I(default_text='5',
          size=(4, None),
          key='_firstrow_',
          enable_events=True),
     sg.T('Last Row:'),
     sg.I(default_text='8',
          size=(4, None),
          key='_lastrow_',
          enable_events=True)
 ],
 # Row 4 - file display
 [
     sg.Listbox(values="", size=(54, 10), key="_file_list_"),
Beispiel #16
0
        def create_main_tab_layout():
            """Create layout for the main tab.

            Contains most common Minecraft options such as version, world name,
            seed, game mode and difficulty. Datapack selection is bundled in the
            main tab, and populated from the assets/datapacks folder.
            """
            logging.debug("Creating main tab layout")
            layout = [[
                sg.Frame("Version",
                         [[
                             sg.T('Minecraft Version', size=(15, 1)),
                             sg.Combo(installed_versions,
                                      installed_versions[0], (25, 1),
                                      readonly=True,
                                      key="main_release")
                         ],
                          [
                              sg.Radio("Show installed versions",
                                       "radio_versions",
                                       True,
                                       enable_events=True,
                                       key="main_installed_versions"),
                              sg.Radio("Show all versions",
                                       "radio_versions",
                                       False,
                                       enable_events=True,
                                       key="main_all_versions")
                          ]])
            ]]
            c1_layout = [[
                sg.T('World Name', size=(10, 1)),
                sg.I(size=(21, 1), key="main_name")
            ]]
            c1_layout += [[
                sg.T('Seed',
                     size=(10, 1),
                     tooltip="Leave blank for random seed"),
                sg.I("", (21, 1),
                     tooltip="Leave blank for random seed",
                     key="main_seed")
            ]]
            c1_layout += [[
                sg.T('Difficulty', size=(10, 1)),
                sg.Combo(difficulties,
                         difficulties[0], (19, 1),
                         readonly=True,
                         key="main_difficulty")
            ]]
            c1_layout += [[
                sg.T('Game mode', size=(10, 1)),
                sg.Combo(game_modes,
                         game_modes[0], (19, 1),
                         readonly=True,
                         key="main_game_mode")
            ]]
            c2_layout = [[sg.Frame('Weather', create_weather_layout())]]
            layout += [[
                sg.Col(c1_layout, pad=(0, 5)),
                sg.Col(c2_layout, pad=(0, 0))
            ]]
            layout += [[
                sg.Frame('Datapacks', create_datapack_layout(), size=(50, 1))
            ]]
            return layout
Beispiel #17
0
def run_gui():
    settings_path = os.path.join(cd, 'setting.json')

    def clear_empty_top_widget(ui):
        '''
        clear ui to easyily for coping functionality (ctrl+c)
        '''
        '''
        # case1
        sg.Frame('', key='gridLayout', layout = [
                    [sg.RButton('PushButton', key='pushButton'), sg.RButton('PushButton', key='pushButton_2')]
        ])
        '''
        first_line = ui.split('\n')[0]
        regex_matched = make_regex(
            r"^sg.Frame\('',\s?key='.*',\slayout\s=\s\[").match(first_line)
        if regex_matched and ui[-2:] == '])':
            new_ui = '[\n' + '\n'.join(ui.split('\n')[1:]).strip()
            return new_ui[:-1]
        return ui

    def update_clear_btn(my_window, my_values, real_value=''):
        objname = my_values['objname'] if real_value == '' else real_value
        all_object_names_in_combo = my_window['objs'].Values

        if my_values[
                'xmlfile'] and objname and objname in all_object_names_in_combo:
            my_window['convert_btn'].update(disabled=False)
            my_window['convert_all_events'].update(disabled=False)
            my_window['convert_btns_events'].update(disabled=False)
        else:
            my_window['convert_btn'].update(disabled=True)
            my_window['convert_all_events'].update(disabled=True)
            my_window['convert_btns_events'].update(disabled=True)

    def update_app_settings():
        with open(settings_path, 'w', encoding='utf-8') as f:
            json.dump(_settings, f, ensure_ascii=False, indent=2)

    def send_board_message(text='*** Done ***', window=None):

        curr_title = window['message_board'].metadata
        new_title = '{} | {} '.format(curr_title, text)
        window['message_board'].TKFrame.config(text=new_title)

        # counter end -> execute this:
        def clear_frame():
            new_board_message = window['message_board'].metadata
            window['message_board'].TKFrame.config(text=new_board_message)

        return {'count': 1, 'finished': clear_frame}

    def parse_n_load_possible_widgets(myxml_file='', window=None, values={}):
        '''
        возвращает найденые object_names все виджетов
        '''

        if os.path.exists(myxml_file) and os.path.isfile(myxml_file):
            # get xml
            with open(myxml_file, 'r', encoding='utf-8') as ff:
                xml_code = ff.read()

            # filter object names
            widgets_regexpattern = make_regex(
                r"^[ \s]{1,}<(widget)\s?.*?\s?name=\"(.+)\"\/?>", MULTILINE)
            layouts_regexpattern = make_regex(
                r"^[ \s]{1,}<(layout)\s?.*?\s?name=\"(.+)\"\/?>", MULTILINE)
            widgets = [
                i.group(2) for i in finditer(widgets_regexpattern, xml_code)
            ]
            layouts = [
                i.group(2) for i in finditer(layouts_regexpattern, xml_code)
            ]
            widgets.sort()
            layouts.sort()

            # #####################
            # обработка id виджетов
            # #####################
            for i in widgets:
                if '"' in i: i = i[:i.index('"')]

            for i in layouts:
                if '"' in i: i = i[:i.index('"')]

            # ######
            # insert
            # ######
            combo_items = [
                '# pick LAYOUTS widgets #', *layouts,
                '# pick WIDGETS widgets #', *widgets
            ]
            window['objs'].update(values=combo_items)
            update_clear_btn(window, values)

            el = combo_items[1]
            if ' ' not in el:
                window['objname'].update(el)
                update_clear_btn(window, values, real_value=el)

            return combo_items
        else:
            window['objs'](values=[])
            window['objname']('')

        return []

    if os.path.exists(settings_path):
        try:
            with open(settings_path, 'r', encoding='utf-8') as f:
                _settings = json.load(f)
        except Exception as e:
            _settings = {'-memento-file-cb-': False, 'xmlfile': ''}
            update_app_settings()
    else:
        _settings = {'-memento-file-cb-': False, 'xmlfile': ''}
        update_app_settings()

    ###############
    ###   GUI   ###
    ###############
    ralign = {'size': (16, 1), "justification": 'r'}
    main_layout = [
        [
            sg.T('xml file', **ralign),
            sg.I(key='xmlfile', size=(35, 2), change_submits=True),
            sg.FileBrowse(target='xmlfile')
        ],
        [
            sg.T('target object name', **ralign),
            sg.I(key='objname', size=(35, 2), change_submits=True)
        ],
        [
            sg.T('all object names', **ralign),
            sg.Drop(values=[''], key='objs', size=(34, 1), change_submits=True)
        ],
        [
            sg.T('', **ralign),
            sg.B('convert', key='convert_btn', disabled=True),
            sg.B('convert++\nall events',
                 size=(-1, 2),
                 key='convert_all_events',
                 disabled=True),
            sg.B('convert++\nbtns events',
                 size=(-1, 2),
                 key='convert_btns_events',
                 disabled=True)
        ],
        [
            sg.T('options:', **ralign),
            sg.CB('try convert unknows widgets', True, key='no_bad_widgets')
        ],
    ]

    settings_layout = [
        [
            sg.CB('Remember path to previous file',
                  False,
                  change_submits=True,
                  key='-memento-file-cb-')
        ],
        [
            sg.T('Indent size', key='indent_size '),
            sg.I('1', size=(5, 1), key='indent_size')
        ],
        [
            sg.T('Indent char', key='indent_char '),
            sg.I(' ', size=(5, 1), key='indent_char')
        ],

        ############
        # autoupdate
        ############
        [
            sg.Frame('Auto updater',
                     layout=[
                         [
                             sg.CB('Enable',
                                   False,
                                   key='enable_autocompiler',
                                   change_submits=True,
                                   pad=(0, 0),
                                   size=(20, 1)),
                             sg.T('interval(ms)'),
                             sg.Spin(list(range(500, 1000)),
                                     initial_value=500,
                                     key='autocompile_interval_ms',
                                     size=(10, 1),
                                     change_submits=True,
                                     pad=(0, 0))
                         ],
                         [sg.T('===========================')],
                         [
                             sg.T('output folder:   ', pad=(0, 0)),
                             sg.I('', key='autotarget_file'),
                             sg.B('copy folder\nfrom input-file',
                                  key='copy_xmlfile_btn',
                                  size=(10, 2),
                                  pad=(0, 0),
                                  button_color=('black', 'orange')),
                             sg.FolderBrowse('browse folder...',
                                             target='autotarget_file',
                                             pad=(0, 0),
                                             key='browse_input_file_key')
                         ],
                         [
                             sg.T('output file name:', pad=(0, 0)),
                             sg.I('untitled_psg.py', key='PSG_OUTPUT_FNAME'),
                         ],
                     ])
        ],
    ]

    layout = [
        [
            sg.TabGroup([[
                sg.Tab('transpiler', main_layout),
                sg.Tab('settings', settings_layout)
            ]]),
            sg.Frame('Output data',
                     layout=[[
                         sg.B('Clear output', key='clear_btn'),
                         sg.B('Execute output (used after convert++)',
                              size=(35, 1),
                              disabled=True,
                              key='Try')
                     ], [sg.ML(key='psg_ui_output', size=(70, 20))]],
                     key='message_board',
                     metadata='Output data')
        ],
    ]

    window = sg.Window('Transpiler',
                       layout,
                       auto_size_buttons=False,
                       default_button_element_size=(10, 1),
                       finalize=True,
                       location=(100, 100))

    # #####
    # setup
    # #####
    if _settings['-memento-file-cb-']:
        window['-memento-file-cb-'].update(True)
        window['xmlfile'].update(_settings['xmlfile'])
        update_app_settings()
    psg_vals = window(timeout=0)[1]
    parse_n_load_possible_widgets(psg_vals['xmlfile'].strip(), window,
                                  psg_vals)

    # #########
    # variables
    # #########
    timers = []

    # ############
    # variables: for auto-compile
    # ############
    is_autocompiler_working = False
    autocompile_interval_ms = psg_vals['autocompile_interval_ms']
    p_input_xml_hash = None
    curr_file_hash = file_hash(psg_vals['xmlfile']) if os.path.exists(
        psg_vals['xmlfile']) else b''
    current_obj_names = []

    status = True
    window['autocompile_interval_ms'](disabled=status)
    window['autotarget_file'](disabled=status)
    window['copy_xmlfile_btn'](disabled=status)
    window['browse_input_file_key'](disabled=status)
    window['PSG_OUTPUT_FNAME'](disabled=status)

    while True:
        if is_autocompiler_working:
            event, values = window(timeout=autocompile_interval_ms)
        else:
            event, values = window(timeout=500)

        if event in (None, 'Exit'):
            break

        # сдежка за таймерами и их работами
        for a_timer in timers:
            if a_timer['count'] > 0:
                a_timer['count'] -= 1
            elif a_timer['count'] == 0:
                a_timer['finished']()
                timers.remove(a_timer)

        ################################
        #     _             _          #
        #    | |           (_)         #
        #    | | ___   __ _ _  ___     #
        #    | |/ _ \ / _` | |/ __|    #
        #    | | (_) | (_| | | (__     #
        #    |_|\___/ \__, |_|\___|    #
        #              __/ |           #
        #             |___/            #
        ################################

        # ############
        # auto compile
        # ############
        is_autocompiler_working = values['enable_autocompiler']
        if is_autocompiler_working:

            autotarget_file_dir = os.path.dirname(values['autotarget_file'])

            if values['objname'] not in current_obj_names:
                window['psg_ui_output'](
                    '(autocompiler) Error :\nBad target object name.')
            elif not os.path.exists(autotarget_file_dir):
                window['psg_ui_output'](
                    '(autocompiler) Error :\nBad output folder.')
            elif not os.path.exists(values['xmlfile']):
                window['psg_ui_output'](
                    '(autocompiler) Error :\nBad input xml file.')
            else:
                file_hash_val = file_hash(values['xmlfile'])
                if not curr_file_hash:
                    # first time
                    output_file = os.path.join(autotarget_file_dir,
                                               values['PSG_OUTPUT_FNAME'])
                    psg_ui_code = just_compile(values)
                    writefile(output_file, psg_ui_code)
                    window['psg_ui_output']('compiled!')
                else:
                    # as usual
                    if curr_file_hash != file_hash_val or event == 'objname':
                        # long
                        output_file = os.path.join(autotarget_file_dir,
                                                   values['PSG_OUTPUT_FNAME'])
                        psg_ui_code = just_compile(values)

                        writefile(output_file, psg_ui_code)
                        window['psg_ui_output']('compiled!')

                curr_file_hash = file_hash_val

        # ###########
        # sg.I events
        # ###########
        # update ms update interval sg.Spin
        if event == 'autocompile_interval_ms':
            autocompile_interval_ms = values['autocompile_interval_ms']

        if event == 'enable_autocompiler':
            status = not values['enable_autocompiler']
            window['autocompile_interval_ms'](disabled=status)
            window['autotarget_file'](disabled=status)
            window['copy_xmlfile_btn'](disabled=status)
            window['browse_input_file_key'](disabled=status)
            window['PSG_OUTPUT_FNAME'](disabled=status)

        if event == 'xmlfile':

            # remember this file
            if _settings['-memento-file-cb-']:
                _settings['xmlfile'] = values['xmlfile'].strip()
                update_app_settings()
            obj_names = parse_n_load_possible_widgets(
                values['xmlfile'].strip(), window, values)
            current_obj_names = obj_names

        elif event == 'objs':
            # add only REAL object names -> those, who not contain ' '
            if ' ' not in values['objs']:
                window['objname'].update(values['objs'])
            update_clear_btn(window, values, real_value=values['objs'])

        elif event == 'objname':
            update_clear_btn(window, values)

        # ########
        # checkbox
        # ########
        if event == '-memento-file-cb-':
            _settings['-memento-file-cb-'] = values['-memento-file-cb-']
            _settings['xmlfile'] = '' if values[
                '-memento-file-cb-'] else values['xmlfile']
            update_app_settings()

        # #######
        # buttons
        # #######
        elif event == 'clear_btn':
            window['psg_ui_output'].update('')

        elif event == 'copy_xmlfile_btn':
            window['autotarget_file'](os.path.dirname(values['xmlfile']) + '/')

        elif event == 'convert_btn':
            ui = just_compile(values)
            window['psg_ui_output'].update(ui)

            if ui.startswith('Error:'):
                # fail
                timers.append(
                    send_board_message(text='***!!!*** Fail ***!!!***',
                                       window=window))
            else:
                # success
                timers.append(
                    send_board_message(text='*** Done ***', window=window))

        elif event == 'convert_all_events':
            ui = just_compile(values)
            psg_ui = build_boilerplate(layout=ui,
                                       btns_event=False,
                                       all_events=True)

            if ui.startswith('Error:'):
                # fail
                window['psg_ui_output'].update(ui)
                timers.append(
                    send_board_message(text='***!!!*** Fail ***!!!***',
                                       window=window))
            else:
                # success
                window['psg_ui_output'].update(psg_ui)
                timers.append(
                    send_board_message(text='*** Done ***', window=window))

        elif event == 'convert_btns_events':
            ui = just_compile(values)
            psg_ui = build_boilerplate(layout=ui,
                                       btns_event=True,
                                       all_events=False)

            if ui.startswith('Error:'):
                # fail
                window['psg_ui_output'].update(ui)
                timers.append(
                    send_board_message(text='***!!!*** Fail ***!!!***',
                                       window=window))
            else:
                # success
                window['psg_ui_output'].update(psg_ui)
                timers.append(
                    send_board_message(text='*** Done ***', window=window))

        elif event == 'Try':
            try:
                psg_ui = values['psg_ui_output'].strip()
                psg_ui_lines = psg_ui.split('\n')
                '''
                case 1:
                    import PySimpleGUI as sg
                    ...
                case 2:
                    sg.Frame('', layout = [
                        [...],
                        [...],
                        [...],
                    ])
                case 3:
                    [
                        [...],
                        [...],
                        [...],
                    ]
                '''
                if psg_ui.startswith('import PySimpleGUI as sg'):
                    exec(psg_ui)
                if psg_ui_lines[0].startswith(
                        """sg.Frame('""") and psg_ui_lines[0].endswith(
                            """', layout = ["""):
                    window2 = sg.Window('test', eval(psg_ui))
                    window2.read()
                    window2.close()
                if psg_ui_lines[0].startswith(
                        """[""") and psg_ui_lines[-1].endswith("""]"""):
                    possible_ui = eval(psg_ui)
                    possible_ui
                    if type(possible_ui) is list and type(
                            possible_ui[0]) is not list:
                        raise Exception(
                            f"bad ui given. It's not a list of LISTS.")
                    window2 = sg.Window('test', possible_ui)
                    window2.read()
                    window2.close()

            except Exception as e:
                sg.popup(str(e))

    window.close()
Beispiel #18
0
def windowInit():

    sg.theme('LightBrown1')
    # sg.theme('HotDogStand')   # funny theme

    # Use Tkinter Agg
    use_agg('TkAgg')

    # Layout Definition
    # cube_layout =
    # allCubeRows = [[sg.Slider((1,10), key=f"slider_x{i}") for i in range(1,6)]]

    # first column of a layout
    function_definition_column = [
        [
            # FUNCTION
            sg.Frame(
                layout=[
                    [
                        sg.
                        T("Podaj wzór funkcji wykorzystując następujące zmienne w podanej kolejności:\nx1, x2, x3, x4, x5."
                          )
                    ],
                    [
                        sg.Text(f"f({CHAR_XVEC})="),
                        sg.In(size=(30, 1), key="-FUNCTION-"),
                        sg.Checkbox('Zatwierdź funkcję',
                                    size=(15, 1),
                                    key='-CONFIRM_FUNCTION-',
                                    default=False,
                                    enable_events=True),
                        sg.B("Test function", key="-TEST_FUNCTION-"),
                    ],
                ],
                title='Funkcja',
                key='function_frame',
                relief=sg.RELIEF_GROOVE,  # GROOVE is normal, nice looking
            )
        ],
        [
            ### CUBE & RESTRICTIONS
            sg.Frame(
                layout=[
                    [
                        sg.Checkbox('Zatwierdź kostkę',
                                    size=(15, 1),
                                    key='-CONFIRM_CUBE-',
                                    default=False,
                                    enable_events=True),
                    ],
                    *[
                        [
                            sg.T(f'x{i}: ',
                                 key=f'tXNo{i}',
                                 font=('Arial', 10, 'bold')),
                            sg.Input(
                                key=f'iMin{i}',
                                size=(5, 1),
                                default_text="-10",
                                tooltip=f'Minimalna wartość zmiennej x{i}'),
                            sg.T(f'{CHAR_LOE} x{i} {CHAR_LOE}',
                                 key=f'cubeTextRange_{i}'),
                            sg.Input(
                                key=f'iMax{i}',
                                size=(5, 1),
                                default_text="10",
                                tooltip=f'Maksymalna wartość zmiennej x{i}'),
                            # sg.VSeperator(key=f'vSep_x{i}'),
                            sg.
                            T(f'rozdzielczość x{i}:',
                              key=f'tCubeRng{i}',
                              tooltip=
                              f'Suwakiem ustal generowaną liczbę punktów dla zmiennej x{i}'
                              ),
                            sg.Slider(
                                range=(10, 200),
                                default_value=70,
                                size=(18, 8),
                                orientation='horizontal',
                                font=('Helvetica', 10),
                                tooltip=
                                f'Suwakiem ustal generowaną liczbę punktów dla zmiennej x{i}',
                                key=f'sRes{i}')
                            # sg.CB(f'Zatwierdź ograniczenie x{i}')
                        ] for i in range(1, 6)
                    ],
                ],
                title='Kostka',
                # tooltip = 'Użyj tego pola do ograniczenia zmiennych xi',
                # relief = sg.RELIEF_SUNKEN
            ),
            sg.Frame(layout=[
                [
                    sg.Checkbox('Zatwierdź ograniczenia',
                                size=(20, 1),
                                key='-CONFIRM_RESTRICTIONS-',
                                default=False,
                                enable_events=True),
                ],
                *[[
                    sg.T(f'g{i}({CHAR_XVEC}): '),
                    sg.In(size=(25, 1), key=f"-REST{i}-"),
                    sg.T(f'{CHAR_LOE} 0'),
                    sg.Checkbox('Zatwierdź',
                                key=f'-CONFIRM_REST{i}-',
                                enable_events=True)
                ] for i in range(1, 6)],
            ],
                     title='Ograniczenia',
                     tooltip='Użyj tego pola do wprowadzenia ograniczeń',
                     relief=sg.RELIEF_GROOVE),

            # sg.Frame(
            #     layout=[
            #         [
            #             sg.Checkbox('Zatwierdź ograniczenia', size=(
            #                 20, 1), key='-CONFIRM_RESTRICTIONS-', default=False, enable_events=True),
            #         ],
            #         [sg.Listbox(key='lbRest',values=[]),sg.T(f'{CHAR_LOE} 0')],
            #         [sg.In(key='-REST-', size=(30,40)),sg.T(f'{CHAR_LOE} 0')],
            #         [sg.B("Dodaj",key="-addRest-"), sg.B("Usuń",key="-rmRest-")]
            #     ],
            #     title='Ograniczenia',
            #     tooltip='Użyj tego pola do wprowadzenia ograniczeń',
            #     relief=sg.RELIEF_GROOVE
            # ),
        ],
        [sg.Button("Rysuj funkcję", key="-GENERATE-")],
        [sg.Button("GenerujMockData", key="-GENERATE_MOCK-")],
        [sg.Output(size=(120, 15), key=keyOfLoggerWindow)],
        [
            # SIMULATION
            sg.Frame(
                layout=[
                    [
                        sg.In(size=(8, 1), key="mu", default_text="20"),
                        sg.T('<- mu', tooltip='liczba rodziców'),
                    ],
                    [
                        sg.In(size=(8, 1), key="lambda", default_text="40"),
                        sg.T('<- lambda', tooltip='liczba potomstwa'),
                    ],
                    [
                        sg.In(size=(8, 1), key="sigma", default_text="0.15"),
                        sg.T('<- sigma', tooltip='parametr mutowalności'),
                    ],
                    [
                        sg.In(size=(8, 1), key="noEpoch", default_text="5"),
                        sg.T('<- N', tooltip='liczba epok'),
                    ],
                    [
                        sg.B("Rozpocznij symulację", key="-RUN_SIMULATION-"),
                    ],
                ],
                title='Symulacja',
                key='simulation_frame',
                relief=sg.RELIEF_GROOVE,  # GROOVE is normal, nice looking
            )
        ],
    ]

    # second column of layout
    graph_viewer_column = [
        [
            sg.T(f"f({CHAR_XVEC})="),
            sg.I("<Wykres funkcji zostanie umieszczony tutaj>",
                 disabled=True,
                 size=(80, 1),
                 key="function_title")
        ],
        [sg.T('Controls1:')],
        [sg.Canvas(key='-FIGURE_CONTROLS1-')],
        [sg.T('Figure1:')],
        [
            sg.Column(
                layout=[[
                    sg.Canvas(
                        key='-FIGURE1-',
                        # it's important that you set this size
                        size=(600, 300))
                ]],
                background_color='#DAE0E6',
                pad=(0, 0))
        ],
        [sg.T('Controls2:')],
        [sg.Canvas(key='-FIGURE_CONTROLS2-')],
        [sg.T('Figure2:')],
        [
            sg.Column(
                layout=[[
                    sg.Canvas(
                        key='-FIGURE2-',
                        # it's important that you set this size
                        size=(600, 300))
                ]],
                background_color='#FFFFFF',
                pad=(0, 0))
        ],
    ]

    # Full layout
    layout = [[
        sg.Column(function_definition_column),
        sg.VSeperator(),
        sg.Column(graph_viewer_column),
    ]]

    # Window definition
    window = sg.Window(
        'Wizualizacja strategii ewolucyjnych',
        layout,
        # default_element_size=(30, 2),
        # font=('Helvetica', ' 10'),
        # default_button_element_size=(8, 2),
        finalize=True,
        # no_titlebar=True,
        location=(0, 0),
        # size=(1024, 1080),
        size=(1920, 1080),
        resizable=True,
        # keep_on_top=True,
    )

    # Hide some elements @ start
    # disable confirming Cube, Restrictions & Generate
    widgetsToDeactivateAtStart = [
        '-CONFIRM_CUBE-', '-CONFIRM_RESTRICTIONS-', '-GENERATE-'
    ]
    for widget_label in widgetsToDeactivateAtStart:
        window.FindElement(widget_label).Update(disabled=True)
    # disable rows of Cube
    for i in range(1, 6):  # 1, 2, 3, 4, 5
        disableCubeRow(i, window)

    return window
Beispiel #19
0
def create_window(settings):
    max_rows, max_cols = int(settings['rows']), int(settings['cols'])
    graph_size = int(settings['graph_x_size']), int(settings['graph_y_size'])
    # Create grid of Graphs with titles
    graph_layout = [[]]
    for row in range(max_rows):
        graph_row = []
        for col in range(max_cols):
            graph = sg.Graph(graph_size, (0,0), DATA_SIZE, key=row*max_cols+col, pad=(0,0))
            graph_row += [sg.Frame('', [[sg.T(size=(30,2), key=f'-TITLE-{row*max_cols+col}', font='helvetica 9')],[graph]], pad=(0,0))]
        graph_layout += [graph_row]

    if settings.get('data source','confirmed') == 'confirmed':
        heading = 'COVID-19 Cases By Region      '
    else:
        heading = 'COVID-19 Deaths By Region      '

    # Create the layout
    layout = [[sg.T(heading, font='Any 20'),
               sg.T(size=(15,1), font='Any 20', key='-DATE-')],]
    layout += graph_layout
    layout += [[sg.T('Way-back machine'),
                sg.Slider((0,100), size=(30,15), orientation='h', enable_events=True, key='-SLIDER-'),
                sg.T(f'Rewind up to 00000 days', key='-REWIND MESSAGE-'),
                sg.CB('Animate Graphs', enable_events=True, key='-ANIMATE-'), sg.T('Update every'), sg.I('50', key='-ANIMATION SPEED-', enable_events=True, size=(4,1)), sg.T('milliseconds')],
               [sg.CB('Enable Forecasting', default=settings.get('forecasting',False), enable_events=True, key='-FORECAST-'), sg.T('       Daily growth rate'), sg.I(str(DEFAULT_GROWTH_RATE), size=(5,1), key='-GROWTH RATE-'),
                sg.T(f'Forecast up to {MAX_FORECASTED_DAYS} days'),
                sg.Slider((0, MAX_FORECASTED_DAYS), default_value=1, size=(30, 15), orientation='h', enable_events=True, key='-FUTURE SLIDER-'),
                ]]
    layout += [[sg.T('Settings', key='-SETTINGS-', enable_events=True),
                 sg.T('     Locations', key='-LOCATIONS-', enable_events=True),
                 sg.T('     Refresh', key='-REFRESH-', enable_events=True),
                 sg.T('     Change Settings File', key='-CHANGE SETTINGS FILENAME-', enable_events=True),
                 # sg.T('     Raw Data', key='-RAW DATA-', enable_events=True),
                 sg.T('     Exit', key='Exit', enable_events=True),
                 sg.T(' '*20),
                 sg.T(size=(40,2), font='Any 8', key='-UPDATED-'),
                 sg.Col([[sg.T(r'Data source: Johns Hopkins - https://github.com/CSSEGISandData/COVID-19', enable_events=True, font='Any 8', key='-SOURCE LINK-', pad=(0,0))],
                [sg.T(f'Version {VERSION} Created using PySimpleGUI', font='Any 8', enable_events=True, key='-PSG LINK-', pad=(0,0))]])]
                ]

    window = sg.Window('COVID-19 Confirmed Cases', layout, grab_anywhere=False, no_titlebar=False, margins=(0,0), icon=ICON,  finalize=True)

    # set cursor to hand for all text elements that looks like links
    _ = [window[key].set_cursor('hand2') for key in ('-SETTINGS-', '-LOCATIONS-', '-REFRESH-', 'Exit', '-SOURCE LINK-', '-PSG LINK-')]

    return window
Beispiel #20
0
def MyInput(key):
    return sg.I('', size=(3, 1), key=key, pad=(0, 2))
Beispiel #21
0
def make_window():
    config = get_config()["INCOMING"]

    navigator_column = [
        [
            sg.Col([[
                sg.Text("General",
                        enable_events=True,
                        key="-general-",
                        pad=((20, 5), (5, 5))),
            ]],
                   expand_x=True,
                   pad=((0, 0), (0, 0))),
        ],
        [
            sg.Col([[
                sg.Text("JSON/Ads",
                        enable_events=True,
                        key="-json-",
                        pad=((20, 5), (5, 5))),
            ]],
                   expand_x=True,
                   pad=((0, 0), (0, 0))),
        ],
        [
            sg.Col([[
                sg.Text("Email",
                        enable_events=True,
                        key="-email-",
                        pad=((20, 5), (5, 5))),
            ]],
                   expand_x=True,
                   pad=((0, 0), (0, 0))),
        ],
        [
            sg.Col([[
                sg.Text("After Effects",
                        enable_events=True,
                        key="-AE-",
                        pad=((20, 5), (5, 5))),
            ]],
                   expand_x=True,
                   pad=((0, 0), (0, 0))),
        ],
        [
            sg.Col([[
                sg.Text("Server Incoming",
                        background_color="darkgrey",
                        size=(20, 1),
                        enable_events=True,
                        key="-incoming-",
                        pad=((20, 5), (5, 5))),
            ]],
                   background_color="darkgrey",
                   expand_x=True,
                   pad=((0, 0), (0, 0))),
        ],
        [
            sg.Col([[
                sg.Text("Server delivery",
                        enable_events=True,
                        key="-delivery-",
                        pad=((20, 5), (5, 5))),
            ]],
                   expand_x=True,
                   pad=((0, 0), (0, 0))),
        ],
        [
            sg.Col([[
                sg.B('Back',
                     pad=((20, 10), (250, 0)),
                     button_color=("white", "black"),
                     highlight_colors=("red", "green"),
                     use_ttk_buttons=False)
            ]],
                   expand_x=True,
                   pad=((0, 0), (0, 20))),
        ],
    ]
    info_column = [
        [
            sg.Text("Select Protocal: "),
            sg.DD(values=["sFTP", "FTP"],
                  key="protocal",
                  default_value=config["protocal"],
                  enable_events=True)
        ],
        [
            sg.Text("FTP Server:"
                    if config["protocal"] == 'FTP' else "sFTP server",
                    pad=((22, 5), (5, 5)),
                    key="server_ident"),
            sg.I(config["server"], key="server", size=(30, 1))
        ],
        [
            sg.Text("Port:", pad=((57, 5), (5, 5))),
            sg.I(config["port"], key="port", size=(30, 1))
        ],
        [
            sg.Text("Username:"******"username"], key="username", size=(30, 1))
        ],
        [
            sg.Text("Password:"******"password_ident"),
            sg.I(config["password"],
                 size=(30, 1),
                 key="password",
                 password_char="*",
                 disabled=not config["protocal"] == 'FTP'),
        ],
        [
            sg.Text("path to private key" if not config.get("private_key_path")
                    else config.get("private_key_path"),
                    size=(40, 1),
                    pad=((32, 5), (5, 5))),
            sg.FileBrowse("Private Key",
                          disabled=config["protocal"] == 'FTP',
                          key="private_key_path")
        ], [sg.T(pad=((0, 400), (70, 0)))],
        [
            sg.T("Campaign JSON path:"),
            sg.I(
                config["json_path"],
                key="json_path",
                size=(20, 1),
            )
        ],
        [
            sg.T("Campaign Ads path:", pad=((15, 5), (5, 5))),
            sg.I(
                config["ads_path"],
                key="ads_path",
                size=(20, 1),
            )
        ], [sg.B("save", pad=((280, 20), (140, 5)))]
    ]
    # ----- Full layout -----
    layout = [[
        sg.Column(navigator_column,
                  vertical_alignment="t",
                  pad=((0, ), (15, 5))),
        sg.VSeperator(pad=(
            (0, 0),
            (0, 0),
        ), color="black"),
        sg.Column(
            info_column,
            vertical_alignment="t",
            pad=((0, ), (15, 5)),
        ),
    ]]

    # Create the window
    window = sg.Window("Settings", layout, margins=(0, 0), icon=apg_logo)
    return window
Beispiel #22
0
    def run_graf(self):
        #menu_def = [['Menu', ['Nueva Funcion', ['Unaria'],], 'Funciones'],
        #['Modo', ['Calculadora', 'Graficadora']],]

        layout = [
            [sg.T('Entrada', font=("Helvetica", 15))],
            [sg.I('', key='-funcion-')],
            [
                sg.T("Las funciones deben tener el siguiente formato: 'y = X'",
                     font=("Helvetica", 15))
            ],
            [
                sg.
                T("La variable X debe ir en mayuscula y cada función va separada por una coma",
                  font=("Helvetica", 15))
            ],
            [sg.B('Graficar', font=("Helvetica", 15), bind_return_key=True)],
            [sg.T("Rango: ", font=("Helvetica", 15)),
             sg.I("", key='-range-')],
            [sg.T("El rango debe ser una tupla", font=("Helvetica", 15))],
            [sg.B("Ingresar Rango", font=("Helvetica", 15))],
            [sg.T('Controls:', font=("Helvetica", 15))],
            [sg.Canvas(key='controls_cv')],
            [sg.T('Figura:', font=("Helvetica", 15))],
            [
                sg.Column(
                    layout=[[
                        sg.Canvas(
                            key='fig_cv',
                            # it's important that you set this size
                            size=(400 * 2, 400))
                    ]],
                    background_color='#DAE0E6',
                    pad=(0, 0))
            ],
            [sg.B('Borrar', font=("Helvetica", 15))],
            [sg.B('Salir', font=("Helvetica", 15))],
            [sg.Menu(self.menu_def)]
        ]

        window = sg.Window('Gráfica', layout)
        rango = (-1, 1)
        graficar_por_rango = False
        while True:
            event, values = window.read(timeout=1)

            if event == "Inicio":
                window.close()
                self.run()
                break

            elif event == "Unaria":
                window.close()
                funcion = sg.popup_get_text('Ingrese la nueva función',
                                            title="Mensaje",
                                            font=self.font)
                self.agregar_unario(funcion)
                self.run_graf()
                break

            elif event == "Calculadora":
                window.close()
                self.run_calc()
                break

            elif event == "Graficadora":
                continue

            elif event == "Funciones":
                self.lista_funciones()
                continue

            if event == "Ingresar Rango":
                if values["-range-"] != '':
                    temp = values["-range-"]
                    temp = temp.split(',')
                    temp[0] = temp[0].replace('(', '')
                    temp[0] = temp[0].replace(' ', '')
                    temp[1] = temp[1].replace(')', '')
                    temp[1] = temp[1].replace(' ', '')
                    try:
                        rango = (float(temp[0]), float(temp[1]))
                        if values["-funcion-"] == '':
                            None
                        else:
                            graficar_por_rango = True
                    except:
                        sg.Popup("El valor de rango no fue válido",
                                 title="Mensaje",
                                 font=self.font)
                        continue

            if event in (sg.WIN_CLOSED,
                         'Salir'):  # always,  always give a way out!
                window.close()
                break

            if event is "Graficar" or graficar_por_rango:
                graficar_por_rango = False
                plt.figure(1)
                fig = plt.gcf()
                DPI = fig.get_dpi()
                fig.set_size_inches(404 * 2 / float(DPI), 404 / float(DPI))
                temp = self.graficar(values["-funcion-"],
                                     rango=rango,
                                     show=False)
                if temp != None:
                    sg.Popup(temp, title="Mensaje", font=self.font)

                draw_figure_w_toolbar(window['fig_cv'].TKCanvas, fig,
                                      window['controls_cv'].TKCanvas)

            if event == "Borrar":
                self.graficar(borrar=True)
                try:
                    draw_figure_w_toolbar(window['fig_cv'].TKCanvas, fig,
                                          window['controls_cv'].TKCanvas)
                except:
                    None

        window.close()
Beispiel #23
0
            list_failed_pdf_conversion.append(pdf_input)
            print('The following pdf files couldn\'t be converted: ')
            for failed_file in list_failed_pdf_conversion:
                print(f'\t{failed_file}')


sg.theme('LightGrey2')  # Please always add color to your window

tab1_layout = [[sg.Text('Tab 1')]]

tab2_layout = [[
    sg.Text('Select Files',
            font='Roboto 12',
            size=(12, 1),
            justification='right'),
    sg.I(f'', key='-IN-F-TAB2-', size=(75, 1)),
    sg.FilesBrowse(file_types=(("PDF Files", "*.pdf"), ("PDF Files", "*.PDF")))
],
               [
                   sg.Text('Select Folder',
                           font='Roboto 12',
                           size=(12, 1),
                           justification='right'),
                   sg.I(f'{os.getcwd()}', key='-IN-D-TAB2-', size=(75, 1)),
                   sg.FolderBrowse()
               ],
               [
                   sg.Text('Save File Name',
                           font='Roboto 12',
                           size=(12, 1),
                           justification='right'),
Beispiel #24
0
def main(mask_rate=0.7):
    """"
    The Main GUI - It does it all.

    The "Board" is a grid that's 9 x 9.  Even though the layout is a grid of 9 Frames, the
    addressing of the individual squares is via a key that's a tuple (0,0) to (8,8)
    """

    # It's 1 line of code to make a Sudoku board.  If you don't like it, then replace it.
    # Dude (Dudette), it's 1-line of code.  If you don't like the board, write a line of code.
    # The keys for the inputs are tuples (0-8, 0-8) that reference each Input Element.
    # Get an input element for a position using:    window[row, col]
    # To get a better understanding, take it apart. Spread it out. You'll learn in the process.
    window = sg.Window('Sudoku',
                       [[
                           sg.Frame('', [[
                               sg.I(random.randint(1, 9),
                                    justification='r',
                                    size=(3, 1),
                                    enable_events=True,
                                    key=(fr * 3 + r, fc * 3 + c))
                               for c in range(3)
                           ] for r in range(3)]) for fc in range(3)
                       ] for fr in range(3)] + [
                           [
                               sg.B('Solve'),
                               sg.B('Check'),
                               sg.B('Hint'),
                               sg.B('New Game'),
                               sg.T('Mask rate (0-1)'),
                               sg.In(str(mask_rate), size=(3, 1), key='-RATE-')
                           ],
                       ],
                       finalize=True)

    # create and display a puzzle by updating the Input elements

    puzzle, solution = create_and_show_puzzle(window)
    check_showing = False
    while True:  # The Event Loop
        event, values = window.read()
        if event == sg.WIN_CLOSED:
            break

        if event == 'Solve':
            for r, row in enumerate(solution):
                for c, col in enumerate(row):
                    window[r, c].update(
                        solution[r][c],
                        background_color=sg.theme_input_background_color())
        elif event == 'Check':
            check_showing = True
            solved = check_progress(window, solution)
            if solved:
                sg.popup('Solved! You have solved the puzzle correctly.')
        elif event == 'Hint':
            elem = window.find_element_with_focus()
            try:
                elem.update(solution[elem.Key[0]][elem.Key[1]],
                            background_color=sg.theme_input_background_color())
            except:
                pass  # Likely because an input element didn't have focus
        elif event == 'New Game':
            puzzle, solution = create_and_show_puzzle(window)
        elif check_showing:  # an input was changed, so clear any background colors from prior hints
            check_showing = False
            for r, row in enumerate(solution):
                for c, col in enumerate(row):
                    window[r, c].update(
                        background_color=sg.theme_input_background_color())
    window.close()
Beispiel #25
0
layout = [
    [sg.Text('My Window')],
    [sg.Text('Click to add a row inside the frame'),
     sg.B('+', key='-B1-')],
    [sg.Text('Click to add a row inside the Window'),
     sg.B('+', key='-B2-')],
    [sg.Frame('Frame', [[sg.T('Frame')]], key='-COL1-')],
    [sg.Input(key='-IN-'),
     sg.Text(size=(12, 1), key='-OUT-')],
    [sg.Button('Button'), sg.Button('Exit')]
]

window = sg.Window('Window Title', layout)
i = 0
while True:  # Event Loop
    event, values = window.read()
    print(event, values)
    if event in (None, 'Exit'):
        break
    if event == '-B1-':
        window.extend_layout(
            window['-COL1-'],
            [[sg.T('A New Input Line'),
              sg.I(key=f'-IN-{i}-')]])
        i += 1
    if event == '-B2-':
        window.extend_layout(
            window, [[sg.T('A New Input Line'),
                      sg.I(key=f'-IN-{i}-')]])
        i += 1
window.close()
#!/usr/bin/python3
'''
	pip install PySimpleGUI requests
'''
import PySimpleGUI as sg, requests
layout = [[sg.B('Test', key='test_serv')],
          [sg.I('', key='itext'),
           sg.B('Send', key='send_text')],
          [sg.ML('', size=(60, 15), key='log')]]
window = sg.Window('', layout, return_keyboard_events=True)
addr = '127.0.0.1:5000'

while True:
    event, values = window()
    if event in (None, 'Exit'): break

    if event == 'test_serv':
        responce = requests.post(f'http://{addr}/')
        window['log'](responce.text)

    if event == 'send_text':
        itext = values['itext']
        responce = requests.post(f'http://{addr}/', json={'text': itext})
        window['log'](responce.text)

    if 'F1' in event:
        window['log'](requests.post(f'http://{addr}/exec',
                                    json={
                                        'i': values['itext']
                                    }).text)