_tkinter。Tcl错误:图像"fulldirectorylink.gif"不存在



很抱歉很痛苦,我知道天知道还有多少其他问题涉及这个"图像不存在"tkinter错误,但是,我发现的这些问题似乎都没有问题整个目录,它们似乎都只是指文件名。

所以,我正在尝试做一个徽标测验,(我已经从示例中删除了一些不相关的代码,否则放置在这里会太长......

但是,当我尝试显示徽标时,它告诉我该图像不存在。 向我显示整个目录链接的问题,如果我直接从错误中复制并放入Windows资源管理器,则可以完美地打开图像。

代码如下:

from tkinter import *
import tkinter.messagebox
import random
from PIL import Image, ImageTk
import os
class Window(Frame):
global questionstart
def questionstart():
if gameplayvar == 0:
chosenlinknumber = random.randint(0, len(templist)-1)
chosen = templist[chosenlinknumber]
temp = chosen.split("\")
temp2 = temp[2].split(".")
temp3 = temp2[0].split("L")
global directory
quizlogo_label = Label(root, image = directory)
quizlogo_label.grid(row=1, column=2)
root = Tk()
root.geometry("900x590") 
root.iconbitmap(r'\replacingtheserverdirectoryDocumentspythontestsLogoslogoquizlogo_YVp_icon.ico')
C = Canvas(root, bg="blue", height=500, width=500)
possiblelinks = [
'\NewLogosAdobeLogo.gif',
'\NewLogosAmazonLogo.gif',
'\NewLogosAppleLogo.gif',
'\NewLogosBMWLogo.gif',
'\NewLogosChromeLogo.gif',
'\NewLogosDebianLogo.gif',
'\NewLogosDiscordLogo.gif',
'\NewLogosFirefoxLogo.gif',
'\NewLogosGoogleLogo.gif',
'\NewLogosMicrosoftLogo.gif',
'\NewLogosOperaLogo.gif',
'\NewLogosPhotoshopLogo.gif',
'\NewLogosPlayStationLogo.gif',
'\NewLogosPythonLogo.gif',
'\NewLogosTwitterLogo.gif',
'\NewLogosVisualStudioCodeLogo.gif',
'\NewLogosWindowsLogo.gif'
]
templist = possiblelinks
chosenlinknumber = random.randint(0, len(templist)-1)
chosen = templist[chosenlinknumber]
p1 = '\replacingtheserverdirectoryDocumentspythontests'
directory = p1+chosen
app = Window(root)
root.mainloop()

这是我运行它时返回的内容:

"C:Program Files (x86)Python36-32python.exe" "//replacing/the/server/directory/Documents/pythontests/tkinterimagetry1.py"
Exception in Tkinter callback
Traceback (most recent call last):
File "C:Program Files (x86)Python36-32libtkinter__init__.py", line 1699, in __call__
return self.func(*args)
File "//replacing/the/server/directory/Documents/pythontests/tkinterimagetry1.py", line 143, in quizstart
questionstart()
File "//replacing/the/server/directory/Documents/pythontests/tkinterimagetry1.py", line 121, in questionstart
quizlogo_label = Label(root, image = directory)
File "C:Program Files (x86)Python36-32libtkinter__init__.py", line 2760, in __init__
Widget.__init__(self, master, 'label', cnf, kw)
File "C:Program Files (x86)Python36-32libtkinter__init__.py", line 2293, in __init__
(widgetName, self._w) + extra + self._options(cnf))
_tkinter.TclError: image "\replacingtheserverdirectoryDocumentspythontestsNewLogosDiscordLogo.gif" doesn't exist

我不知道是什么原因导致它找不到该文件,因为作为错误给出的目录在 Windows 资源管理器中运行良好。

谢谢 Xan

这是有问题的部分:

global directory
quizlogo_label = Label(root, image = directory)

Label 构造函数希望图像作为 ImageTk 实例传入,而不是包含文件名的字符串。

它需要像这样:

global directory
self.photo = Image.PhotoImage(directory)
self.image = ImageTk.PhotoImage(self.photo)
quizlogo_label = Label(root, image = self.photo)

请注意,作为属性分配的图像类的两个实例都self这是Window的实例,以便在函数退出时不会对它们进行垃圾回收

相关内容

最新更新