动态更改连接到列表框中项目的图像

时间:2019-03-23 15:55:07

标签: python tkinter

我想在列表框中动态显示所选项目的图像。 文件夹中图像存储的名称与列表框中我的元组中索引为[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:元组索引超出范围

在我看来,在打开应用程序之前,什么都没有选择,但是我不知道如何解决。

2 个答案:

答案 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!