WxPython将选择转换为数值TypeError

时间:2018-06-06 10:49:39

标签: python python-3.x wxpython wxwidgets

所以我想这是一个相当简单的问题,我只是不明白错误。这是我目前的代码:

        # 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 :(得分:1)

indexlist的函数,它返回项的第一个出现索引。

替换

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

有了这个

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

答案 1 :(得分:1)

我认为你执行该代码的方式没有任何好处 为什么不呢:

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()])