WxPython конвертирует выбор в числовое значение TypeError - PullRequest
0 голосов
/ 06 июня 2018

Итак, я представляю, что это довольно простой вопрос, когда я просто не понимаю ошибку.Это мой текущий код:

        # SINGLE CHOICE INPUT
        choices = ["Auto", "Manual", "Manual (code only)"]
        chooseOneBox = wx.SingleChoiceDialog(None, "Setup / Opsætning", "Setup / Opsætning", choices)

        if chooseOneBox.ShowModal() == wx.ID_OK:
            setupChoice = choices.index[chooseOneBox.GetStringSelection()] + 1
            if setupChoice == 1:
                print(choices[setupChoice]-1)
            elif setupChoice == 2:
                print(choices[setupChoice]-1)
            print(choices[setupChoice])

Итак, у меня есть список choices, который содержит набор опций, которые правильно отображаются в chooseOneBox.При попытке сделать:
setupChoice = choices.index[chooseOneBox.GetStringSelection()] + 1 я получаю следующую ошибку: 'builtin_function_or_method' object is not subscriptable.

Я хочу преобразовать строку из chooseOneBox в целое число по упрощенным причинам.Как мне избежать этой ошибки?

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

Я не вижу никакого преимущества в том, как вы выполняете этот код.
Почему бы и нет:

choices = ["Auto", "Manual", "Manual (code only)"]
chooseOneBox = wx.SingleChoiceDialog(None, "Setup / Opsætning", "Setup / Opsætning", choices)

if chooseOneBox.ShowModal() == wx.ID_OK:
    setupChoice = choices.index(chooseOneBox.GetStringSelection())
    print(choices[setupChoice])

Или даже более просто, используя GetSelection(), который возвращает индексвыбранный пункт:

choices = ["Auto", "Manual", "Manual (code only)"]
chooseOneBox = wx.SingleChoiceDialog(None, "Setup / Opsætning", "Setup / Opsætning", choices)

if chooseOneBox.ShowModal() == wx.ID_OK:
    print(choices[chooseOneBox.GetSelection()])
0 голосов
/ 06 июня 2018

index - это функция list, которая возвращает первый индекс появления элемента.

Заменить

choices.index[chooseOneBox.GetStringSelection()] + 1

На этот

choices.index(chooseOneBox.GetStringSelection()) + 1
...