首页 > 解决方案 > 背景图像未出现在 tkinter 中

问题描述

我正在尝试在我的 tkinter 项目中放置背景图像,但尽管进行了多次尝试,但它根本没有出现。

这是代码:

import tkinter
from PIL import ImageTk,Image

show_screen = tkinter.Tk()
show_screen.geometry('900x900')
show_screen.title("LEARNTECH OPE")
img_show = Image.open("C:\PYTHON IDE\RemoteProctoring_Featured.png")
show_image = ImageTk.PhotoImage(img_show)
show_label = tkinter.Label(show_screen,font=("Arial Bold",10),fg="blue",
                           text="FILL THE NECESSARY DETAILS GIVEN BELOW")
show_label.place(x=600,y=0)
enter_field = tkinter.Entry(show_screen,width=50)
enter_field.place(x=600,y=200)

def clicked():
    ref = "Welcome" + enter_field.get()
    show_label.configure(text=ref)

show_button = tkinter.Button(show_screen,text="CLICK TO EXIT",
                             fg="green",command=clicked).place(x=600,y=400)
show_screen.mainloop()

标签: pythontkinter

解决方案


正如我在评论中所说,图像只能作为某些tkinter小部件的一部分显示。下面是通过将图像放入Label. 我还添加了代码来调整图像大小以填充窗口(在您的代码中也称为“屏幕”)。

import tkinter
from PIL import ImageTk, Image

WIDTH, HEIGHT = 900, 900
IMG_PATH = r"C:\PYTHON IDE\RemoteProctoring_Featured.png"  # Note 'r' prefix.

show_screen = tkinter.Tk()
show_screen.geometry('{}x{}'.format(WIDTH, HEIGHT))
show_screen.title("LEARNTECH OPE")

# Place background image on a Label widget.
tmp_img = Image.open(IMG_PATH).resize((WIDTH, HEIGHT), Image.ANTIALIAS)
bkg_img = ImageTk.PhotoImage(tmp_img)
bkg_label = tkinter.Label(show_screen, image=bkg_img)
bkg_label.img = bkg_img  # Keep a reference in case this code put is in a function.
bkg_label.place(relx=0.5, rely=0.5, anchor='center')  # Place in center of window.

enter_field = tkinter.Entry(show_screen,width=50)
enter_field.place(x=600,y=200)

show_label = tkinter.Label(show_screen,font=("Arial Bold",10),fg="blue",
                           text="FILL THE NECESSARY DETAILS GIVEN BELOW")
show_label.place(x=600,y=0)

def clicked():
    ref = "Welcome " + enter_field.get()
    show_label.configure(text=ref)

show_button = tkinter.Button(show_screen,text="CLICK TO EXIT",
                             fg="green",command=clicked)
show_button.place(x=600,y=400)

show_screen.mainloop()

推荐阅读