Я неправильно использую библиотеку PySimple GUI? Что мне не хватает? - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь узнать Python онлайн из видео через Интернет. В качестве проекта для начинающих я решил разработать простую систему под названием POS (Point of Sale) с библиотекой PySimple GUI.

Есть ошибка, которую я пытался исправить в течение пары дней. Когда я нажимаю «Отмена», он возвращается к главному окну (рабочему окну), но после выбора другого работника пропускает второе окно и переходит к третьему окну (окну состояния). Если я повторю то же самое снова, на этот раз оно перейдет к четвертому окну.

Не могли бы вы объяснить, что я делаю не так? Спасибо.

import PySimpleGUI as sg


window_list = ["worker", "item", "state", "action"]
worker_list = ["worker_1", "worker_2", "worker_3"]
item_list   = ["item_1", "item_2", "item_3", "item_4", "item_5", "item_6", "item_7"]
state_list  = ["new", "kinda new", "old"]
action_list = ["buying", "selling"]

width, height = sg.Window.get_screen_size()
sg.theme("DarkAmber")


#   window 1 - worker menu
workerButton = [ [ sg.Button("worker_1", size=(10, 5)), sg.Button("worker_2", size=(10, 5)), sg.Button("worker_3", size=(10, 5)) ],
                 [ sg.Button("EXIT", size=(10, 5)) ] ]
worker = sg.Window("CHOOSE A SELLER", workerButton, no_titlebar=False, size=(500, 500), keep_on_top=False)

#   window 2 - item menu
itemButton = [ [ sg.Button("item_1"), sg.Button("item_2") ],
               [ sg.Button("item_3"), sg.Button("item_4"), sg.Button("item_5"), sg.Button("item_6"), sg.Button("item_7") ],
               [ sg.Button("CANCEL", size=(10, 5)) ] ]
item = sg.Window("CHOOSE AN ITEM", itemButton, size=(500, 500))

#   window 3 - state menu
stateButton = [ [ sg.Button("new"), sg.Button("kinda new"), sg.Button("old") ],
                [ sg.Button("CANCEL", size=(10, 5)) ] ]
state = sg.Window("CHOOSE A STATE", stateButton, size=(500, 500))

#   window 4 - action menu
actionButton = [ [ sg.Button("buying"), sg.Button("selling") ],
                 [ sg.Button("CANCEL", size=(10, 5)) ] ]
action = sg.Window("CHOOSE AN ACTION", actionButton, size=(500, 500))


def ChoosingWorker():
    event, values = worker.read()
    if event in worker_list:
        return event
    else: # exit button
        return "EXIT"

def ChoosingItem():
    event, values = item.read()
    if event == "item_1" or event == "item_2":
        item.close()
        return event # i was thinking another feature to item_1 and item_2 thats why i separatedly check it but i haven't coded yet
    elif event in item_list:
        item.close()
        return event
    else: # cancel button
        item.close()
        return event

def ChoosingState():
    event, values = state.read()
    if event in state_list:
        state.close()
        return event
    else: # cancel button
        state.close()
        return event

def ChoosingAction():
    event, values = action.read()
    if event in action_list:
        action.close()
        return event
    else: # cancel button
        action.close()
        return event


while True:
    if ChoosingWorker() == "EXIT":
        worker.close()
        break

    switch = 1

    if switch == 1:
        if ChoosingItem() == "CANCEL":
            switch = 0

    if switch == 1:
        if ChoosingState() == "CANCEL":
            switch = 0

    if switch == 1:
        if ChoosingAction() == "CANCEL":
            switch = 0
...