我有两个列表框,每个都引用一个单独的文本文件。当我在 classList 框中单击时它起作用(光标选择填充到文本框)。
如果我先点击 speciesList 框,什么也不会发生(没有填充到文本框,没有错误)。如果我先点击 classList,然后点击 speciesList,我会得到一个错误:
Tkinter 回调异常 追溯(最近一次通话): 文件“C:\Users\owner\AppData\Local\Programs\Python\Python311\Lib kinter_init_.py”,第 1948 行,在call 返回 self.func(*args) ^^^^^^^^^^^^^^^^ 文件“C:\Users\owner\OneDrive\Desktop\CS113\Final\CharBuilder GUI.py”,第 6 行,在 classList 中 线= lst1.get(lst1.curselection()) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 文件“C:\Users\owner\AppData\Local\Programs\Python\Python311\Lib kinter_init_.py”,第 3253 行,在 get 返回 self.tk.call(self._w, 'get', first) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ _tkinter.TclError:错误的列表框索引“”:必须是活动的、锚点、结尾、@x、y 或数字 Tkinter 回调异常
def speciesList(lineList2):
line2= lst2.get(lst2.curselection())
lineList2= line2.split(',')
txt15.delete(1.0, tk.END)
txt15.insert(tk.END, lineList2[0])
return lineList2[0]
def classList(lineList):
line= lst1.get(lst1.curselection())
lineList= line.split(',')
txt8.delete(1.0, tk.END)
txt8.insert(tk.END, lineList[0])
return lineList[0]
infile = open("datafiles/specieslist.txt", 'r')
for line2 in infile:
##line= line.split(',')
lst2.insert(tk.END, line2)
infile.close()
lst1=tk.Listbox(height=6, width=25)
lst1.grid(column=6, row=1, rowspan=5)
lst1.bind("<<ListboxSelect>>", classList)
infile = open("datafiles/classlist.txt", 'r')
for line in infile:
##line= line.split(',')
lst1.insert(tk.END, line)
infile.close()
期望是我单击每个列表并将所选项目填充到其相应的文本框。
真的对问题是什么感到困惑。我从工作 listBox 复制/粘贴代码并重命名变量(据我所知我得到了它们),并适当地更改了文件引用。