我一直在尝试将图像放入我的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在我的代码的不同部分定义,我创建了一个男性衬衫类,但我觉得这个问题没有必要。请让我知道如何将我的图像传输到新窗口!
答案 0 :(得分:0)
你至少有两个问题。
首先,您不应创建多个Toplevel
实例或多次调用mainloop。如果您需要其他窗口,请创建mainloop
的实例,不要再次拨打Toplevel
。
二,您的图像被垃圾收集,因为您使用局部变量来存储图像。有关详细信息,请参阅http://effbot.org/pyfaq/why-do-my-tkinter-images-not-appear.htm
您还将标签放在根窗口而不是您正在创建的Label
的实例中,因为您忽略了将T.insert(END, T)
作为父级。
最后,我不知道你认为window_create
应该做什么。您似乎正在尝试将小部件插入其中。 a)这没有意义,b)如果你想将一个小部件插入一个文本小部件,你必须使用Label
方法,c)如果你的实际意图是将一个图像插入一个文本小部件,那么你不要#39; t需要image_create
,您可以使用7/16, 02/11, 5/12
代替as.Date
。