我想从一个列表框中进行 Select ,并使用所选值检索其他数据,这些数据也将插入到另一个列表框中进行 Select .当 Select 第一个列表框时,它成功地工作,没有任何错误.第二个列表框在 Select 第一个时也会更新新列表.当 Select 第二个列表框时,问题就出现了,除了附带的错误异常外,所有预期的一切都正常工作.

from tkinter import *
root= Tk()
books = ['Genesis', 'Exodus', 'Leviticus']
chapter = [1,2,3,4,5]
biblelist = Listbox(root)
biblelist.pack(side=LEFT)
biblelist.insert(END, 0)

chapter = Listbox(root)
chapters.pack(side=LEFT)

def get_selected(e):
    global book_selected
    index = int(biblelist.curselection()[0])
    value=biblelist.get(index)
    book_selected = '%s' %(value)
    if book_selected == books[0]
        for x in chapter:
            chapters.insert(END, x)


def get_selected_chapter(event):
    ind = int(chapters.curselection()[0])
    val=chapters.get(ind)
    chapter_selected = '%s' %(val)
    print(book_selected + chapter_selected)

biblelist.bind('<<ListboxSelect>>',get_selected)
chapters.bind('<<ListboxSelect>>', get_selected_chapter)
root.mainloop()

代码真正给了我我想要的,但我不舒服的错误. 这就是错误: File "C:\Users\a\Desktop\emma\PROJECT\index.py", line 685, in get_selected index = int(biblelist.curselection()[0]) ~~~~~~~~~~~~~~~~~~~~~~~~^^^ IndexError: tuple index out of range

我try 了所有的错误,但仍然失败.我真的需要帮助.我也是Python编程的新手.

推荐答案

您遇到的错误(IndexError:元组索引超出范围)是因为您试图访问空元组的索引.当curselection()返回一个空元组时,会发生这种情况,因为Listbox中没有任何项目被选中.为了处理这个问题,在try 访问其索引之前,您应该首先判断是否有 Select .

比如 def get_selected(e): 全球图书_selected if biblup.curselection():#添加此端口进行错误处理 index = int()[0])

def get_selected_chapter(event): if chapters. curselection(): #错误处理 int = int(chapters. curselection()[0])

Python相关问答推荐

列表上值总和最多为K(以O(log n))的最大元素数

如何在箱形图中添加绘制线的传奇?

删除最后一个pip安装的包

为什么这个带有List输入的简单numba函数这么慢

用NumPy优化a[i] = a[i-1]*b[i] + c[i]的迭代计算

django禁止直接分配到多对多集合的前端.使用user.set()

当独立的网络调用不应该互相阻塞时,'

如何从pandas的rame类继承并使用filepath实例化

Python—从np.array中 Select 复杂的列子集

driver. find_element无法通过class_name找到元素'""

如何根据一列的值有条件地 Select 前N组?

找到相对于列表索引的当前最大值列表""

如何在海上配对图中使某些标记周围的黑色边框

根据Pandas中带条件的两个列的值创建新列

有没有办法让Re.Sub报告它所做的每一次替换?

如何写一个polars birame到DuckDB

如何根据一定条件生成段id

Django.core.exceptions.SynchronousOnlyOperation您不能从异步上下文中调用它-请使用线程或SYNC_TO_ASYNC

将数字数组添加到Pandas DataFrame的单元格依赖于初始化

按条件计算将记录拆分成两条记录