Python Tkinter调用curselection()提示仅需1个参数但传入2个如何解决
问题排查与解决方案
错误根因
你触发报错的原因是对Tkinter Listbox组件的方法调用逻辑错误:curselection()是无入参方法,仅用于查询当前Listbox中被选中的项的索引,返回值为选中索引组成的元组,无选中项时返回空元组。该方法只接收默认的隐式self参数,你调用时额外传入了参数0,合计传入2个参数超出了方法的接收范围,因此触发对应TypeError报错。
修复方案
从你的业务逻辑来看,你是希望匹配到首字母对应的文件后,选中Listbox中对应索引的条目,而非查询当前选中项,因此需要将curselection(0)调用替换为选中指定条目的逻辑,修改后的triggerBackButton方法对应代码段如下:
def triggerBackButton(self, event): if event.char in string.ascii_lowercase: files = os.listdir(self.path_history[-1]) for idx in range(len(files)): if files[idx][0].lower() == event.char: # 清空之前的选中状态,避免多选 self.listBox.selection_clear(0, END) # 选中目标索引对应的条目 self.listBox.selection_set(idx) self.listBox.activate(idx) # 可选:将选中条目滚动到可视区域 self.listBox.see(idx) break
注:如果你代码中是
import tkinter as tk的导入方式,需要将END替换为tk.END。
内容的提问来源于stack exchange,提问作者Tanmay Chavan
相关产品推荐
相关产品推荐

