Как использовать значение в списке, с комбо - pysimplegui - PullRequest
0 голосов
/ 12 апреля 2020
import PySimpleGUI as sg

storedvals = []

sg.LOOK_AND_FEEL_TABLE['Theme'] = {'BACKGROUND': '#292929',
                                    'TEXT': '#009bff',
                                    'INPUT': '#ffffff',
                                    'TEXT_INPUT': '#000000',
                                    'SCROLL': '#ffffff',
                                    'BUTTON': ('#5cfd46', '#151515'),
                                    'PROGRESS': ('#01826B', '#D0D0D0'),
                                    'BORDER': 1, 'SLIDER_DEPTH': 0, 'PROGRESS_DEPTH': 0,
                                    }

sg.theme("Theme")

def mainmenu():
    mainmenu = [
    [sg.Text("Welcome to the Calculator!")],
    [sg.Text("What would you like to do:")],
    [sg.Text("1) Add\n2) Subtract\n3) Multiply\n4) Divide\n5) Exit")],
    [sg.Text("Please enter the number of the option you would like!")],
    [sg.InputText("", key="in1"),sg.Text("", key="answer")],
    [sg.ReadButton("Submit")]
    ]

mainmenu = sg.Window('Window that stays open', mainmenu)

while True:
    button, values = mainmenu.Read()
    if button is None:
        break
    choice = int(values["in1"])
    mainmenu.FindElement("answer").Update(choice)
    if choice == 1:
        mainmenu.Close()
        add()
    if choice == 2:
        mainmenu.Close()
        subtract()
    if choice == 3:
        mainmenu.Close()
        multiply()
    if choice ==4:
        mainmenu.Close()
        divide()
    if choice == 5:
        exit()

def add():
    add = [
        [sg.Text("What numbers would you like to add together?")],
        [sg.Text("Stored values are in the drop down option!")],
        [sg.Combo([storedvals], size=(5,1), key="num1"), sg.Text("+"), sg.Combo([storedvals], size=(5,1), key="num2")],
        [sg.Text("Do you want to store this value")],
        [sg.Radio("Yes", "1", key="x"), sg.Radio("No", "1",)],
        [sg.ReadButton("Add")],
        [sg.Text("Answer:"), sg.Text("", size=(10,1), key="answer")],
        [sg.Button("Return to the menu"), sg.Exit()],
    ]

add = sg.Window("", add)
while True:
    button, values = add.Read()
    if button is None:
            break

    num1 = int(values["num1"])
    num2 = int(values["num2"])
    answer = num1 + num2
    add.FindElement("answer").Update(answer)
    x = values["x"]
    if x == 1:
        storedvals.append(answer)
        sg.Popup("You answer has been stored in position", storedvals.index(answer))
        print(storedvals)
    event, values = add.Read()
    if event == "Return to the menu":
        add.Close()
        mainmenu()



mainmenu()

Это мой код. После завершения этой подпрограммы они могут вернуться в главное меню, чтобы снова использовать калькулятор. Я хочу, чтобы они могли сохранить предыдущий ответ на расчет и затем использовать его в последующих расчетах (что работает). Я решил использовать комбо, однако я получаю сообщение об ошибке, и после исследования ошибки я не могу найти решение проблемы. Любые советы полезны.

Ошибка: аргумент TypeError: int () должен быть строкой, байтовоподобным объектом или числом, а не «списком»

Я пробовал несколько разных способы манипулировать им, но я только начал изучать pysimple GUI, поэтому я застрял.

...