图片添加到Tkinter程序没有显示

时间:2015-03-10 16:31:44

标签: python tkinter

这是我的代码的一部分:

rip = tk.Tk()

f2 = tk.Frame(rip)
f2.grid(column=0, row=0, sticky=("nwes"))
f2.columnconfigure(0, weight=1)
f2.rowconfigure(0, weight=1)
c1=tk.Label(f2, text="feet to meter or meter to feet?")
c1.grid(row=0, column=0)
c2=tk.Label(f2, text='type "ft" for feet to meter, type "m" for meter to feet')
c2.grid(row=1, column=0)
lol = tk.StringVar()
choice = tk.Entry(f2, width=7, textvariable=lol)
choice.grid(row=2, column=0)
b1=tk.Button(f2, text="Confirm", command=choose)
b1.grid(row=3, column=0)
picfile="bgmain.gif"
image = tk.PhotoImage(file=picfile)
w=image.width()
h=image.height()
x=10
y=10
rip.geometry("%dx%d+%d+%d"%(w,h,x,y))
panel=tk.Label(rip,image=image)
button=tk.Button(panel, text="button widget")
button.pack(side="top", pady=5)
panel.image=image

rip.mainloop()

我试图添加背景图片。没有错误消息,似乎图片被调出,因为窗口大小已更改为图片的大小。但是没有任何东西会出现,它在背景中仍然是白色的。

1 个答案:

答案 0 :(得分:0)

您已将图片添加到标签中,但尚未将标签添加到窗口中。由于panel未被放置在屏幕上,因此它将不可见。由于它是不可见的,因此其中的图像也将是不可见的。

如果您希望将此作为背景图片,place是几何管理器的不错选择。您可以使用place设置图片以填充其父级,如下所示:

panel.place(x=0,y=0, relwidth=1.0, relheight=1.0)

您也可以使用grid,但显然有不同的参数。在这种特定情况下,您无法使用pack,因为您已在主窗口中使用grid

根据您想要的效果,您可能需要更改堆叠顺序。由于您当前正在创建panel作为您创建的最后一件事,因此它可能会掩盖其他小部件,因为它会堆叠"在他们之上。最简单的解决方案是首先创建背景图像,然后创建最重要的小部件。您的另一个选择是使用panel.lower(0)降低panel的堆叠顺序。