将背景图像设置为 GUI

Setting Background image to GUI

我制作了一个带有几个按钮的 GUI,我想将灰色背景更改为图像。

我的代码如下所示:

from tkinter import *
from urlread import givenumbers # my function

""" Setting The Main GUI """

GUI = Tk()
GUI.title('Check GUI')
GUI.iconbitmap('test.ico')
GUI.geometry("400x400")

background_image=PhotoImage('pic.jpg')
background_label = Label(GUI, image=background_image)
background_label.place(x=0, y=0, relwidth=1, relheight=1)

""" Reading Images For Buttons """
A_Im      = PhotoImage(file='A.gif')


""" Creating Buttons """
# A Button
A_Button = Button(GUI, image=A_Im, command=givenumbers)
A_Button.grid(column=0, row=1)

GUI.mainloop()

代码运行没有错误,但背景仍然是灰色,没有任何效果。

问题出在 background_image=PhotoImage('pic.jpg') 行。 PhotoImage class 仅支持 GIF-files,这意味着它无法读取您指定的文件。你应该尝试这样的事情:

#Python 2.7    
import Tkinter as tk
from PIL import Image, ImageTk
window = tk.Tk()
image = Image.open('image.jpg')
photo_image = ImageTk.PhotoImage(image)
label = tk.Label(window, image = photo_image)
label.pack()

# Python 3
import tkinter as tk
from PIL import Image, ImageTk
window = tk.Tk()
image = Image.open('image.jpg')
photo_image = ImageTk.PhotoImage(image)
label = tk.Label(window, image = photo_image)
label.pack()

PIL模块中的Imageclass支持多种格式,其中jpegpng。您可以在命令提示符或终端中通过 运行 pip install pillow 安装 PIL 模块。

如果您想将小部件放在 Label 之上,您确实可以使用 grid 将它们放在彼此之上,但是使用 Canvas 可能会更容易。您可以找到有关 Canvas 小部件 here.

的更多信息

这也可以在没有 pil 的情况下完成:

from tkinter import *
import tkinter as ttk

""" Setting The Main GUI """

GUI = Tk()

F1=Frame(GUI)
F1=Frame(GUI,width=400,height=450)
F1.place(height=7000, width=4000, x=100, y=100)
F1.config()


F1.grid(columnspan=10,rowspan=10)

F1.grid_rowconfigure(0,weight=1)
F1.grid_columnconfigure(0,weight=1)


photo=PhotoImage(file="C:\Users\HOME\Desktop\Eshita\12th\computer
\python\GUI\math3.gif")
label = Label(GUI,image = photo)
label.image = photo # keep a reference!
label.grid(row=0,column=0,columnspan=20,rowspan=20)

b=ttk.Button(GUI,text="Start")
b.grid(row=8,column=8)

GUI.mainloop()