python-3.x 将图像导入Tkinter画布失败

pinkon5k  于 2023-01-18  发布在  Python
关注(0)|答案(1)|浏览(172)

所以我尝试为一个更大的项目做一个简单的登录页面,我不断地添加图片和运行它,但每次我运行它,它都会给我这个"错误:_tkinter. Tcl错误:图像"〈PIL. Image. Image image image mode = RGBA size = 70x70 at 0x1AEE532D780〉"不存在".我对tkinter真的是个新手,但是我已经使用python快4个月了.有人能帮我一下吗?
我试着添加一张图片作为背景,一张作为徽标。我希望它能加载进来,让普通的登录看起来不错。我真的是tkinter的新手,面临着很多麻烦,我很挣扎,因为在大多数教程中,他们写代码,我写的是一样的,但我们的结果不同。如果问题中有任何错误,请评论并解释,因为这是我关于堆栈溢出的第一个问题,我仍然在努力理解函数。谢谢!
下面是我的更新代码:

import tkinter as tk
from PIL import ImageTk, Image
from tkinter import messagebox

def login(name,pwd):
    if len(name)==0:
        messagebox.showinfo(title="Authentication", message="Enter Username")
    elif len(pwd)==0:
        messagebox.showinfo(title="Authentication", message="Enter Password")
    elif name=='admin':
        if pwd=='p4$$w0Rd':
            messagebox.showinfo(title="Authentication", message="Woohoo! Sucessfully authenticated and logged in :D !")
    else:
        messagebox.showinfo(title="Authentication", message="Oh no! Failed to Authenicate and Login D: !")
else:
        messagebox.showinfo(title="Authentication", message="Oh no! Failed to Authenicate and Login D: !")



root = tk.Tk()
root.geometry("400x300")
root.title("Krypton OS Login Page")

bg = ImageTk.PhotoImage(Image.open("Apps\Login\wallpaper.jpg"))
label=tk.Label(image=bg)
label.place(x=0,y=0)

img = Image.open("Apps\Login\Login.jpg")
#img = img.resize((70, 70))
rgb_img = img.convert("RGB")
rgb_img.save("Login.jpg")
label1 = tk.Label(image=img)
label1.place(x=150, y=30)

label2 = tk.Label(root, text = "User Name", font=(10))
label2.place(x=50, y=120)

name_var = tk.StringVar()
uname = tk.Entry(root, textvariable=name_var, width=15,font=(10))
uname.place(x=160,y=120)

label3 = tk.Label(root, text="Password", font=(10))
label3.place(x=50, y=160)

pwd_var = tk.StringVar()
pwd = tk.Entry(root, textvariable=pwd_var, width=15,font=(10), 
show="*")
pwd.place(x=160,y=160)

B = tk.Button(root,text="LOGIN", 
width=15,fg="red",bg="black",command=lambda:login(name_var.get(), 
pwd_var.get()))
B.place(x=160,y=210)

root.mainloop()
7bsow1i6

7bsow1i61#

因此,首先,你需要修复你的背景的大小调整过程和你的标签的可视化通过这样做:

bg = (Image.open(r"YourPath"))
bg2 = bg.resize((400,300), Image.ANTIALIAS)
bg = ImageTk.PhotoImage(bg2)
label=tk.Label(image=bg)
label.pack()

然后,对于login.jpg有几乎相同的问题这样做:

img = Image.open(r"YourPath")
img2 = img.resize((70, 70))
img = ImageTk.PhotoImage(img2)
label1 = tk.Label(image=img)

现在它应该工作了,我已经测试过了,如果你需要什么,告诉我。我希望这对你有帮助。

相关问题