尝试在tkinter python中将图像用作按钮时,_str__返回非字符串(类型为JpegImageFile)

e4yzc0pl  于 2023-03-16  发布在  Python
关注(0)|答案(1)|浏览(147)

尝试在Tkinter中将图像用作按钮时,_str__返回非字符串(类型为JpegImageFile)。我尝试使用file=而不是Image.open,但也不起作用。有人能告诉我如何解决此问题吗
下面是代码的简化版本:

from tkinter import *
from PIL import ImageTk, Image

# Window setup

mainwindow = Tk()
mainwindow.geometry('420x420')
mainwindow.title('Root Screen')

# Button image source

temp_img = PhotoImage(Image.open('D:\\Coding\\Python_stuff\\Watch_T800\\temp_img.jpg'))
temp_img_lbl = Label(image=temp_img)
temp_img_lbl.pack()

# Button function 

def menufun():
    menuwindow = Tk()
    menuwindow.geometry('420x420')
    menuwindow.title('Menu')
    
    temp = Button(menuwindow, text="Temperature",height=5, width=10, image=temp_img)
    temp.grid(row=0, column=0)

# Home Buttons

menu = Button(mainwindow, text="Menu", command=menufun).pack()

# BG Image

bg=Image.open('D:\\Coding\\Python_stuff\\Watch_T800\\background.png')
blah1=ImageTk.PhotoImage(bg)
lbl=Label(mainwindow, image=blah1)
lbl.pack()

mainloop()

这里是错误:

Traceback (most recent call last):
  File "d:\Coding\Python_stuff\Watch_T800\test.py", line 14, in <module>
    temp_img_lbl = Label(image=temp_img)
                   ^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\yashw\AppData\Local\Programs\Python\Python311\Lib\tkinter\__init__.py", line 3204, in __init__
    Widget.__init__(self, master, 'label', cnf, kw)
  File "C:\Users\yashw\AppData\Local\Programs\Python\Python311\Lib\tkinter\__init__.py", line 2628, in __init__
    self.tk.call(
TypeError: __str__ returned non-string (type JpegImageFile)

我已经解释过我试过了,但我再说一遍
我尝试使用file=代替image.open,但它显示
未找到页面

rekjcdws

rekjcdws1#

添加小写字母r。
更改此内容:

temp_img = PhotoImage(Image.open('D:

致:

temp_img = PhotoImage(Image.open(r'D:

还有这个:

bg=Image.open(r'D:

相关问题