PySimpleGUI空Listbox调用get_indexes()触发IndexError问题咨询
问题根因
Listbox.get_indexes() 方法在无选中项时会返回空元组,此时直接取下标[0]就会触发IndexError。就算Listbox有内容,用户点击空白区域未选中任何项时也会出现同样的报错,这个判断逻辑本身就是必要的,实现起来非常简单。
最简修复方案
只需要在触发Listbox事件后先判断返回的索引元组是否非空,再进行后续操作即可,修改后的事件处理代码如下:
if event == 'Listbox': indexes = window['Listbox'].get_indexes() # 空元组布尔值为False,只有存在选中项时才执行后续逻辑 if indexes: print(indexes[0])
如果使用Python 3.8及以上版本,用海象运算符可以写得更简洁:
if event == 'Listbox': if indexes := window['Listbox'].get_indexes(): print(indexes[0])
这个方案不仅覆盖了Listbox为空的场景,也能兼容Listbox有内容但用户未选中任何项的场景,不需要额外修改Listbox的其他配置。
内容的提问来源于stack exchange,提问作者Eskimo868
相关产品推荐
相关产品推荐

