求助,运行时tkinter报错
Closed this issue · 6 comments
❯ python3 ./EdgeGPT-GUI.py
DEPRECATION WARNING: The system version of Tk is deprecated and may be removed in a future release. Please don't rely on it. Set TK_SILENCE_DEPRECATION=1 to suppress this warning.
Traceback (most recent call last):
File "/Users/potapo/github/EdgeGPT-GUI/./EdgeGPT-GUI.py", line 34, in <module>
root = ttk.Window()
File "/Users/potapo/Library/Python/3.9/lib/python/site-packages/ttkbootstrap/window.py", line 231, in __init__
self._icon = tkinter.PhotoImage(master=self, data=Icon.icon)
File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/tkinter/__init__.py", line 4064, in __init__
Image.__init__(self, 'photo', name, cnf, master, **kw)
File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/tkinter/__init__.py", line 4009, in __init__
self.tk.call(('image', 'create', imgtype, name,) + options)
_tkinter.TclError: couldn't recognize image data
Hello, this error may be because of 'ttkbootstrap module
你好,这个报错可能是因为'ttkbootstrap'模块
Errors occur on line 34
错误出现在第34行
Please try to modify the code
请尝试修改代码
root = ttk.Window()
root.geometry( "1200x800" )
root.title( "EdgeGPT-GUI" )
找到第34行,并由上面的代码改为下面的代码
Find line 34 and change the code to the code below
root = tk.Window()
root.geometry( "1200x800" )
root.title( "EdgeGPT-GUI" )
Please try it. I hope it will help you
请尝试一下,希望对你有帮助
您好,以下是我询问Bing后得到的结果
Bing
您好,这是Bing。这个报错是因为tkinter.PhotoImage()只支持GIF和PGM/PPM等几种不常用的图片格式,而您的图片文件可能是JPG或PNG等其他格式。您可以尝试以下方法解决这个问题:
- 将您的图片文件转换为GIF或PGM/PPM格式
- 使用PIL库来读取和显示JPG或PNG等图片文件
希望对您有帮助!
User
可我的程序中并没任何图片加载的代码,难道是 "ttkbootstrap" 库的问题吗
Bing
您好,根据搜索结果,ttkbootstrap库是一个用于美化tkinter界面的库,它包含了一些使用base64编码的图片数据。可能是您的程序在使用ttkbootstrap时没有正确加载这些图片数据,导致报错。您可以尝试以下方法解决这个问题:
- 确保您的程序中导入了tkinter.PhotoImage类,并用它来创建图片对象
- 确保您的程序中指定了正确的ttkbootstrap主题名称,并且该主题包含了所需的图片数据
- 如果您是使用pyinstaller打包您的程序,那么请确保将ttkbootstrap库中的themes.json和Symbola.ttf文件复制到与您的main.py和main.spec文件相同的文件夹,并在main.spec文件中添加datas= [ ('themes.json', 'ttkbootstrap'), ('Symbola.ttf', 'ttkbootstrap')]参数
希望对您有帮助!
所以,我认为,是您的 "ttkbootstrap" 库出了些问题
所以可以尝试禁用它
root = ttk.Window()
root.geometry( "1200x800" )
root.title( "EdgeGPT-GUI" )
改为
root = tk.Window()
root.geometry( "1200x800" )
root.title( "EdgeGPT-GUI" )
看看是否能解决问题
这样也不行,AttributeError: module 'tkinter' has no attribute 'Window'
❯ python3 EdgeGPT-GUI.py
Traceback (most recent call last):
File "/Users/potapo/github/EdgeGPT-GUI/EdgeGPT-GUI.py", line 34, in <module>
root = tk.Window()
AttributeError: module 'tkinter' has no attribute 'Window'
抱歉是我的疏忽,应改为
root = tk.Tk()
root.geometry( "1200x800" )
root.title( "EdgeGPT-GUI" )
我查了一下这好像是python不匹配Mac自带的tkinter的问题,我重新装一下python试试
搞定了,中间出现了这个错误
❯ python EdgeGPT-GUI.py
Traceback (most recent call last):
File "/Users/potapo/github/EdgeGPT-GUI/EdgeGPT-GUI.py", line 37, in <module>
root.attributes( "-toolwindow" , 2 ) #只保留退出键
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/tkinter/__init__.py", line 1976, in wm_attributes
return self.tk.call(args)
_tkinter.TclError: bad attribute "-toolwindow": must be -alpha, -fullscreen, -modified, -notify, -titlepath, -topmost, -transparent, or -type
我把这一行注释了就好了