在 Tkinter Python 程序中看不到图片

Posted

技术标签:

【中文标题】在 Tkinter Python 程序中看不到图片【英文标题】:Not Able to See the Picture in Tkinter Python Program 【发布时间】:2020-05-02 03:12:02 【问题描述】:
topper = Toplevel()
topper.title("2nd Window")
topper.state('zoomed')
my_img = ImageTk.PhotoImage(Image.open("diamond.png"))
my_label = Label(topper, image=my_img, height = 100 , width = 100)
F21 = Frame(topper, borderwidth=83, bg="blue", relief=SUNKEN)
button1 = Button(topper, text="class", command=topper.destroy)
button1.pack()
my_label.pack()

我正在运行代码,我没有收到任何错误,按钮也可以正常工作,但我无法在窗口中看到图片。

【问题讨论】:

代码在函数内部吗? 【参考方案1】:

欢迎来到 *** Shakti!

对于未来 - 提供Minimal, Reproducible Example 总是好的,这样其他人可以复制和更好地理解您的问题,以便为您提供帮助!它还可以帮助您了解错误的确切来源。

当您从另一个 tkinter 窗口调用 Toplevel() 以打开一个新窗口时,您还需要在第二个窗口上调用“mainloop()”以显示图像 - 使用示例图像尝试我的代码和用

注释/取消注释该行
topper.mainloop()

查看功能上的差异。

改编代码:

from tkinter import *
from PIL import Image, ImageTk   # pip install pillow

def show_second_window():
    topper = Toplevel()
    topper.title("2nd Window")
    topper.state('zoomed')
    my_img = ImageTk.PhotoImage(Image.open("t1.png"))
    my_label = Label(topper, image=my_img, height=100, width=100)
    F21 = Frame(topper, borderwidth=83, bg="blue", relief=SUNKEN)
    button1 = Button(topper, text="class", command=topper.destroy)
    button1.pack()
    my_label.pack()

    topper.mainloop()  # <---- this is needed to show the image!


root = Tk()
root.title("1st window")
button = Button(root, text="show second window", command=show_second_window)
button.pack()
root.mainloop()

【讨论】:

Toplevel 函数是一个 tkinter 小部件。 感谢布莱恩!我修改了代码,但它仍然在我的情况下运行,所以我猜测错误在于“diamond.png”或Shakti给出的代码之外。 先生,它正在处理这个文件,并且正在显示图片,但是当我将此窗口与另一个窗口连接时,而不是单击该窗口时,此窗口正在打开,但图像未显示。 啊,好吧,现在我明白你的问题了!我将在一秒钟内编辑我的代码 如果答案帮助您解决了问题,请投票并接受它:) -> ***.com/help/someone-answers

以上是关于在 Tkinter Python 程序中看不到图片的主要内容,如果未能解决你的问题,请参考以下文章

在 Spyder 中看不到由 PySide2 创建的应用程序窗口

在 python 中看不到数据库查询输出

Python:Tkinter TclError:无法调用“图像”命令

Python3 tkinter,怎么在Label/Canvas中插入图片?

python tkinter Label 图形

Python 在坐标处找不到 tkinter 项目