0

***错误信息 :

Traceback (most recent call last):
  File "C:/Users/gurse/Desktop/Khanda/Khanda.py", line 3, in <module>
    label = Label(x, image=PhotoImage(file=r"C:\Users\gurse\Desktop\Khanda"))
  File "C:\Users\gurse\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 4062, in __init__
    Image.__init__(self, 'photo', name, cnf, master, **kw)
  File "C:\Users\gurse\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 4007, in __init__
    self.tk.call(('image', 'create', imgtype, name,) + options)
_tkinter.TclError: couldn't open "C:\Users\gurse\Desktop\Khanda": permission denied *****

我当前的代码:

 from tkinter import *
 x = Tk()
 label = Label(x, image=PhotoImage(file=r"C:\Users\gurse\Desktop\Khanda"))

反斜杠变成了一个 Y,它有 2 行。

4

2 回答 2

0

根据traceback中的信息,"C:\Users\gurse\Desktop\Khanda"是一个目录。因此,尝试将目录作为文件打开会引发异常。

所以你需要传递一个图像文件的路径,比如"C:\Users\gurse\Desktop\Khanda\sample.png".

但是,由于您直接传递PhotoImage(...)toimage选项的结果,图像将被垃圾收集,因为没有变量引用它。所以你需要使用一个变量来存储PhotoImage(...).

此外,您需要在标签上调用grid()pack()place(),否则它不会出现。

最后你需要调用,x.mainloop()否则程序将立即退出。

以下是基于您的示例代码:

from tkinter import *
x = Tk()
image = PhotoImage(file="C:/Users/gurse/Desktop/sample.png")
label = Label(x, image=image)
label.pack()
x.mainloop()
于 2020-12-14T05:05:15.520 回答
0

该错误表示它无法访问图像。

在这种情况下,您只放置了图像的路径,但图像名称不包含在其中。

要解决此问题,您还必须将图像的名称放在路径中,例如:

r"C:\Users\gurse\Desktop\Khanda\TestImage.png

一个小建议 -> PhotoImage 只对图像进行一些扩展(即 jpeg 会出现错误)

我希望我已经清楚了;)

编辑:用户 acw1668 没有错:您必须使用该方法mainloop()来显示带有小部件的窗口

于 2020-12-13T16:55:48.550 回答