将背景图像设置为 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支持多种格式,其中jpeg
和png
。您可以在命令提示符或终端中通过 运行 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()
我制作了一个带有几个按钮的 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支持多种格式,其中jpeg
和png
。您可以在命令提示符或终端中通过 运行 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()