所以我想这是一个相当简单的问题,我只是不明白错误。这是我目前的代码:
# 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
转换为整数。如何避免出现错误?
答案 0 :(得分:1)
index
是list
的函数,它返回项的第一个出现索引。
替换
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()])