【问题标题】:How to put image in another window in tkinter?如何将图像放在 tkinter 的另一个窗口中?
【发布时间】:2024-04-23 18:20:02
【问题描述】:

我想使用tkinter 在第二个窗口中放置图像,在第一个窗口中代码运行良好,但第二个窗口什么也没有显示。

在这部分我导入必要的模块:

from tkinter import filedialog, Tk, Frame, Label, PhotoImage, Button
from PIL import  Image
from tkinter import*
import tkinter as tk

然后创建主窗口:

raiz = Tk()
raiz.title("ventana")

然后我创建框架并将图像放入框架中:

 miFrame = Frame()
 miFrame.pack()
 miFrame.config(width="1400", heigh=("1200"))

 fondo=tk.PhotoImage(file="fondoF.png")
 fondo=fondo.subsample(1,1)
 label=tk.Label(miFrame,image=fondo)
 label.place(x=0,y=0,relwidth=1.0,relheight=1.0)

然后是调用第二个窗口函数的按钮:

 btn3 = Button(raiz, text="boton")
 btn3.place(x=500, y=500)
 btn3.config(command=abrirventana2)

这里我们有打开第二个窗口的功能,这里(我猜)是我想要放置图像的地方。

这部分还有两个按钮,名为mih,在此期间什么都不做,ok,它调用函数来关闭第二个窗口:

def abrirventana2():
 raiz.deiconify()
 ventana2=tk.Toplevel()
 ventana2.geometry('500x500')
 ventana2.title("ventana2")
 ventana2.configure(background="white")
 fondov=tk.PhotoImage(file="xxx.gif")
 label1=tk.Label(ventana2,image=fondov)
 label1.place(x=50,y=50,relwidth=5.0,relheight=5.0)
 mensaje=tk.Label(ventana2,text="funciona")
 mensaje.pack(padx=5,pady=5,ipadx=5,ipady=5,fill=tk.X)
 boton1=tk.Button(ventana2,text='mih')
 boton1.pack(side=tk.TOP)
 boton2=tk.Button(ventana2,text='ok',command=ventana2.destroy)
 boton2.pack(side=tk.TOP)

关闭第二个窗口的功能:

def cerrarventana2():
    ventana.destroy()

我使用主循环来保持窗口打开

 raiz.mainloop()

注意:我已经尝试在第二个窗口中创建框架,但没有成功。

【问题讨论】:

    标签: python image tkinter python-3.7


    【解决方案1】:

    为我之前的错误答案道歉。 图像未显示的原因是您没有创建对它的引用。如果您不创建引用,图像将被垃圾收集,不会删除它,但在某种意义上只是在 GUI 上呈现一个空白占位符。

    为了正确显示图像,您需要在显示图像的代码中添加对图像的引用。 因此,您现在拥有:

    fondov=tk.PhotoImage(file="giphy.gif") label1=tk.Label(ventana2,image=fondov) label1.image = fondov label1.pack()

    label1.image = fondov 是参考)

    很抱歉给您带来了困惑。这应该可以。

    【讨论】:

    • 嗨,谢谢你的帮助,我没有注意到没有“()”的部分“label1.pack”,但这不是问题。:c,我也做了你所说的“ .place" 和 ".pack" 但问题仍然存在:c
    • 抱歉,我之前的回答实际上是不正确的。我玩了一会并解决了这个问题。请查看我的更新答案。
    • 非常感谢,现在工作得很好。我是新来的,我怎样才能给你积分或类似的东西? :v
    • 您可以将我的答案标记为正确 :) 将不胜感激!
    • 我是 python 新手,我一直在玩 tkinter 来做 GUI,如果我有其他问题,我希望我能指望你。我在您的个人资料中看到您正在做一个 GUI,您使用的是 tkinter 还是其他库?