wxPython组合框GetSelection方法失效,无法获取youtube-dl GUI下拉框选中索引
问题原因与修复方案
核心故障:方法调用遗漏括号
你当前的打印语句print(self.quality_selection_drop_down.GetSelection),只是引用了ComboBox对象的内置方法,没有实际执行方法逻辑,所以输出会是方法本身的内存地址标识,而不是选中值。
你之前尝试的GetSelection、GetCurrentSelection、GetValue、GetStringSelection等所有控件方法,只要没有加()执行,输出都会和当前看到的结果完全一致。
正确的调用方式必须补上方法括号:
def video_dl(self, event): # 实际调用方法,获取选中项的整数索引 selected_index = self.quality_selection_drop_down.GetSelection() print(selected_index)
隐藏的索引越界问题
wxFormBuilder生成的初始化代码里,self.quality_selection_drop_down.SetSelection(4)存在越界错误:
- 下拉选项列表一共4个元素,ComboBox的选项索引从0开始计数,最大有效索引是3
- 传入索引4超出有效范围,不会生效,会导致下拉框初始状态无选中项,此时即使改对了方法调用,
GetSelection()也会返回-1(即wx.NOT_FOUND)
选项和索引的对应关系:
- 索引0:720p
- 索引1:Best Quality Available
- 索引2:Audio (mp3)
- 索引3:Non Youtube
如果需要默认选中最后一项,应将初始化代码修改为SetSelection(3)
常用取值方法参考
修复调用方式后,可根据需求选择对应方法获取控件值:
GetSelection():返回选中项的整数索引,未选中时返回wx.NOT_FOUNDGetStringSelection():返回选中项的文本内容GetValue():返回ComboBox输入框内显示的字符串内容
内容的提问来源于stack exchange,提问作者Shalmon Anandas
相关产品推荐
相关产品推荐

