为了账号安全,请及时绑定邮箱和手机立即绑定

我无法理解和解决 tkinter.Tclerror

我无法理解和解决 tkinter.Tclerror

婷婷同学_ 2023-07-18 10:09:18
我无法理解也无法解决我到目前为止编写的以下代码中的 tkinter.TclError 。请解决这个问题,我有作业要使用 python 制作 mp3 播放器程序,我想快速提交它。而且我也提供了回溯。 代码From tkinter importroot = Tk()root.title("Creeper Awww Man MP3 Player")root.geometry("500x400")# Create Playlist Box playlist_box = Listbox(    root,    bg = "black",    fg = "#4666FF",    width = 60)playlist_box.pack(pady=20)# Define Button Image For Controlsback_btn_img = PhotoImage(file='images/back.png')forward_btn_img = PhotoImage(file='images/forward.png')play_btn_img = PhotoImage(file='images/play.png')pause_btn_img = PhotoImage(file='images/pause.png')stop_btn_img = PhotoImage(file='images/stop.png')# Create Button Framecontrol_frame = Frame(root)control_frame.pack(pady=20)# Create Play/Stop etc Buttonsback_button = Button(control_frame, image=back_btn_img,)forward_button = Button(control_frame, image=forward_btn_img,)play_button = Button(control_frame, image=play_btn_img,)pause_button = Button(control_frame, image=pause_btn_img,)stop_button = Button(control_frame, image=stop_btn_img,)back_button.grid(row=0, column=0, padx=10)forward_button.grid(row=0, column=1, padx=10)play_button.grid(row=0, column=2, padx=10)pause_button.grid(row=0, column=3, padx=10)stop_button.grid(row=0, column=4, padx=10)root.mainloop()和错误Traceback (most recent call last):  File "mp3_player.py", line 19, in <module>    forward_btn_img = PhotoImage(file='images/forward.png')  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/tkinter/__init__.py", line 4061, in __init__    Image.__init__(self, 'photo', name, cnf, master, **kw)  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/tkinter/__init__.py", line 4006, in __init__    self.tk.call(('image', 'create', imgtype, name,) + options)_tkinter.TclError: couldn't recognize data in image file "images/forward.png"如果您能帮助我,我将感谢你们所有人,我将不胜感激。
查看完整描述

2 回答

?
慕虎7371278

TA贡献1802条经验 获得超4个赞

情况1:


问题可能是因为您的 tkinter 版本不支持 png。下面是如何继续使用PIL/ Pillow。


首先安装它,在你的终端中这样说。


pip install Pillow

然后...


from PIL import Image, ImageTk #import it

....

back_btn_img = ImageTk.PhotoImage(Image.open('images/back.png')) #instantiate the image

您也可以为其余图像文件复制相同的格式。


这样做的一个优点是,您还可以调整图像大小。


案例2:


该错误也可能是因为文件格式不正确,您确定转换正确还是文件已损坏?您可能想检查所有这些,并执行正确的转换方法(如果仅通过更改扩展名进行转换)。hello.jpg请记住,如果要将文件转换为 png,您应该使用软件或在线网站来执行此操作,但不要将文件重命名为hello.png.


希望这有帮助,如果有任何错误或疑问,请告诉我。


查看完整回答
反对 回复 2023-07-18
?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

使用 PIL :


from tkinter import *

from PIL import ImageTk, Image


root = Tk()


root.title("Creeper Awww Man MP3 Player")

root.geometry("500x400")


# Create Playlist Box 

playlist_box = Listbox(

    root,

    bg = "black",

    fg = "#4666FF",

    width = 60

)

playlist_box.pack(pady=20)


back_btn_img = ImageTk.PhotoImage(Image.open('back.png').resize((50, 50), Image.ANTIALIAS)) 

# .resize(xx, xx) ,, changing image size



# Create Button Frame

control_frame = Frame(root)

control_frame.pack(pady=20)


# Create Play/Stop etc Buttons

back_button = Button(control_frame, image=back_btn_img,)



back_button.grid(row=0, column=0, padx=10)




root.mainloop()


查看完整回答
反对 回复 2023-07-18
  • 2 回答
  • 0 关注
  • 204 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信