无法将图片添加到Tkinter列表框

2 投票
1 回答
2888 浏览
提问于 2025-04-17 15:40

我想在一个列表框(Listbox)里添加一张图片,但我看到的不是图片,而是一个叫“pyimage1”的条目。我之前用文本框和标签(Label)成功显示过图片,但就是搞不定列表框这个小东西。

我查了文档,但里面没有说明怎么正确地在列表框里更新图片。

有什么好的方法可以把图片作为列表框的一个条目添加进去吗?

这是我到目前为止尝试过的:

#!/usr/bin/python
# test: lb_and_jpg.py

from Tkinter import *
from PIL import Image, ImageTk

import os

my_image_file = os.getcwd() + r'\logo.jpg'

class MainApp:
    def __init__(self, parent):
        self.myParent = parent
        self.main_container = Frame(parent)
        self.main_container.grid(row=0, rowspan=10, column=0, columnspan=20)

        # Defining frames
        self.left_frame = Frame(self.main_container)
        self.left_frame.grid(row=0, rowspan=10, column=0, columnspan=5)

        self.right_frame = Frame(self.main_container)
        self.right_frame.grid(row=0, rowspan=10, column=6, columnspan=14)

        self.left_listbox = Listbox(self.left_frame, height=10, width=5)
        self.left_listbox.grid(row=0, column=0)

        self.right_listbox = Listbox(self.right_frame, height=10, width=14)
        self.right_listbox.grid(row=0, column=0)

        my_img = Image.open(my_image_file)
        my_image = ImageTk.PhotoImage(my_img)

        self.right_listbox.insert(END, my_image)


root = Tk()
root.title("ListBox and JPG")
mainapp = MainApp(root)
root.mainloop()

1 个回答

1

你不能在列表框里添加图片。你需要使用其他的控件,比如ttk.Treeview控件。

撰写回答