首页 > 解决方案 > 无法在第二个 Tkinter 帧中显示图像标签

问题描述

我正在尝试使用 Tkinter 构建一个简单的 gui。该应用程序涉及一个较小的辅助框架,在按下按钮时会在主框架之上打开。此辅助帧必须包含图像。图像标签很容易出现在主框架上,但在辅助框架上,图像标签显示为图像大小的空框,具有我设置的任何背景颜色。

这是它的样子

这是我的做法:

#send diagram page
def send_diagram():
    send_diagram_frame=tk.Frame(frame, bg="#D4BAEC")
    send_diagram_frame.place(relx=0.5, rely=0.5, relheight=0.7, relwidth=0.7, anchor="center")

    send_diagram_entry_working_image=Image.open('/home/raghav/RemEdi/design/assets/generic_page_entry.png')
    send_diagram_entry_image=ImageTk.PhotoImage(send_diagram_entry_working_image)
    send_diagram_entry_label=tk.Label(send_diagram_frame, image=send_diagram_entry_image)
    send_diagram_entry_label.place(relx=0.5, rely=0.5, anchor="center")
    return

可见,send_diagram() 是按钮的命令。

我尝试在辅助框架内添加另一个较小的框架来包含图像,但这也不起作用。

任何帮助都会非常有帮助。谢谢!

标签: python-3.xuser-interfacetkinter

解决方案


您正在一个函数内创建新图像,并使用它自己的本地命名空间。当函数结束时,对图像的引用将被垃圾收集。

您可以通过在标签小部件中保存对图像的引用来解决此问题。创建图像后将此行放入函数中:

send_diagram_entry_label.image = send_diagram_entry_image

推荐阅读