我的if / else语句和EasyGUI选项框似乎有些问题。我知道如果用户按“取消”,则返回“无”。我的代码总是输入“Else”语句。另外,我的第二个For循环似乎没有迭代。有没有更好的方法来选择我想要的对象(国家/地区名称)?到目前为止,这是我的代码,带有调试输出。
更新:问题在于我出于某种原因使用Mac。我使用了我的电脑,它按预期工作。
答案 0 :(得分:0)
根据this,choicebox
返回None
,然后按下取消按钮,而不是字符串'None'
。将您的条件更改为if choice is None:
,它应该有效。
第二个for
循环的问题是csvdict
是一个迭代器,在你的第一个for
循环中使用它后会耗尽。您可以创建新的迭代器,也可以将文件的内容存储在列表或字典中(如果数据不是太多)。您已经为country
字段执行了此操作,但您似乎需要所有字段。最好的方法是创建一个dict
将country
名称映射到包含其他字段的列表,这样您就可以快速访问它们,而不必再次遍历所有条目。
// instead of your first for loop
choices = dict()
for line in csvdict:
choices[line['Country']] = line
...
// instead of your second for loop
if choice in choices:
line = choices[choice]
...