图像赢得';t出现在我的tkinter文本小部件上

图像赢得';t出现在我的tkinter文本小部件上,tkinter,Tkinter,我一直试图在tkinter子窗口中获取一个图像,当我运行此代码时,我没有收到任何错误,但我在子窗口中只获得一系列数字。以下是我的一段代码: from tkinter import * top = Tk('Outfit Randomizer') #gender entry L1 = Label(top, text = 'What is your gender? Type 1 for male and 2 for female') L1.grid(row = 0, column = 0) g =

我一直试图在tkinter子窗口中获取一个图像,当我运行此代码时,我没有收到任何错误,但我在子窗口中只获得一系列数字。以下是我的一段代码:

from tkinter import *
top = Tk('Outfit Randomizer')

#gender entry
L1 = Label(top, text = 'What is your gender? Type 1 for male and 2 for female')
L1.grid(row = 0, column = 0)
g = StringVar()
E1 = Entry(top, bd = 5, textvariable = g)
E1.grid(row = 0, column = 1)

#submit function
def submit():
    g.get()
    gender = g.get()
    if gender == '1':
        root = Toplevel()
        T = Text(root, height = 30, width = 90)
        T.pack()
        mhbs = random.choice([ms1, ms2]) 
        if mhbs == ms1:
            photo = PhotoImage(file = "m.GIF")
            label = Label(image = photo)
            label.image = photo
            label.pack()
        if mhbs == ms2:
            photo = PhotoImage(file = "m.GIF")
            label = Label(image = photo)
            label.image = photo
            label.pack()
        T.insert(END, T)

#submit button
MyButton1 = Button(top, text = 'Submit', width = 10, command = submit)
MyButton1.grid(row = 3, column = 1)

top.mainloop()

ms1和ms2是在我的代码的另一部分中定义的,我在这里创建了一个男式衬衫类,但我觉得这对于这个问题是不必要的。请让我知道我可以做些什么,让我的图像转移到新窗口

您至少有两个问题

首先,决不能创建一个以上的
Tk
实例或多次调用mainloop。如果需要另一个窗口,请创建
Toplevel
的实例,不要再次调用
mainloop

第二,您的映像正在被垃圾收集,因为您正在使用局部变量存储映像。有关更多信息,请参阅

您还将标签放在根窗口中,而不是您正在创建的
Toplevel
实例中,因为您忽略了为
标签提供父级


最后,我不知道您认为
T.insert(END,T)
应该做什么。看起来您正在尝试将小部件插入自身。a) 这是没有意义的,b)如果你想在文本小部件中插入小部件,你必须使用
window\u create
方法,c)如果你的实际意图是在文本小部件中插入图像,那么你不需要
标签,你可以使用
image\u create

请在本网站上搜索未显示的tk ter图像。必须至少有100名相关人员questions@BryanOakley我搜索过这个网站和其他很多网站,有相关的问题,但我还没有找到一个在我的网站上有效的答案program@sammy图像未显示,因为标签未打包。查看错误消息。如果你想让其他人修复你的代码,请发布一个他们可以实际运行并查看发生了什么情况的帖子。你发布的代码会引发很多错误。我已经做了你建议的所有更改并修改了我的代码,但我一直收到垃圾收集的图像!我在我的帖子中更新了我的代码,如果你想检查一下,看看是否能找到我的错误所在。