我想在列表框中动态显示所选项目的图像。 文件夹中图像存储的名称与列表框中我的元组中索引为[0]的项完全相同
list1= Listbox(ViewFrame, height=15, width=75)
files = glob.glob('img\\*.jpg')
ImageFrame = LabelFrame(page1, text="Podgląd i parametry")
ImageFrame.grid(row=6, column=6, pady=10, padx=5)
path = files[list1.curselection()[0]]
img = ImageTk.PhotoImage(Image.open(path))
label = Label(ImageFrame)
label.image = img
label.configure(image=img)
错误:
path = files [list1.curselection()[0]]
IndexError:元组索引超出范围
在我看来,在打开应用程序之前,什么都没有选择,但是我不知道如何解决。
答案 0 :(得分:1)
检查是否在加载图像之前选择了某些东西。
创建列表框时添加
list1.bind("<<ListboxSelect>>", on_item_selected)
然后添加功能
def (on_item_selected):
path = files[list1.curselection()[0]]
img = ImageTk.PhotoImage(Image.open(path))
label = Label(ImageFrame)
label.image = img
label.configure(image=img)
打开时......
if list1.curselection():
path = files[list1.curselection()[0]]
img = ImageTk.PhotoImage(Image.open(path))
label = Label(ImageFrame)
label.image = img
label.configure(image=img)
答案 1 :(得分:0)
这是可运行的代码,但这只是我创建的@ 1966bc答案的更完整版本,因为您的问题不是MCVE:
permit!