如何使用 PYTHON 的“tkinter”模块在画布上显示图像,特别适用于 linux?

Posted

技术标签:

【中文标题】如何使用 PYTHON 的“tkinter”模块在画布上显示图像,特别适用于 linux?【英文标题】:How to display display an IMAGE on a CANVAS using PYTHON's "tkinter" module, Specifically for linux? 【发布时间】:2021-01-12 02:02:15 【问题描述】:

我使用了以下代码:

# A Python program to display images in canvas
from tkinter import *

# create a root window
root = Tk()

# create a canvas as a child to the root window
c = Canvas(root,bg='black',height=700,width=1200)

# copy images into files
file1 = PhotoImage(file='PYTHON/Graphical User Interface[GUI]/Containers/cat.png')
file2 = PhotoImage(file='PYTHON/Graphical User Interface[GUI]/Containers/puppy.png')

# Display the Image in the canvas in NE direction
# when mouse is placed on cat image, we can see puppy image
id = c.create_image(500,200,ANCHOR=NE,image=file1,activeimage=file2)

# display some text below the image
id = c.create_text(500,500, text= "Displaying Image Demo in tkinter",\
    font = ('Helvetica',30,'bold'), fill='blue')

# add canvas to the root
c.pack()

# wait for any events
root.mainloop()

上述代码在执行时,在VScode中显示如下错误:

Traceback (most recent call last):
  File "/DATA/CodeTrainings/PYTHON/Graphical User Interface[GUI]/Containers/canvasImage(linux).py", line 12, in <module>
    file2 = PhotoImage(file='PYTHON/Graphical User Interface[GUI]/Containers/puppy.png')
  File "/home/lancelot/anaconda3/envs/pyTrain/lib/python3.8/tkinter/__init__.py", line 4061, in __init__
    Image.__init__(self, 'photo', name, cnf, master, **kw)
  File "/home/lancelot/anaconda3/envs/pyTrain/lib/python3.8/tkinter/__init__.py", line 4006, in __init__
    self.tk.call(('image', 'create', imgtype, name,) + options)
_tkinter.TclError: couldn't open "PYTHON/Graphical User Interface[GUI]/Containers/puppy.png": no such file or directory

它说目录中不存在任何此类文件,但确实存在:

而且,在 Windows 中一切正常,但是当涉及到 LINUX 中的图像文件时,总是会弹出错误! 非常感谢有人能回答我的问题,但是非常感谢您提供有关如何处理图像文件以及在 LINUX 上处理图像文件时的限制条件的详细解释或指示。

谢谢!

【问题讨论】:

使用相对文件名,python 将在当前工作目录中查找,该目录可能与脚本相同,也可能不同。这与文件的类型或内容无关。您只是给出了一个相对于当前工作目录的无效文件名。 Python脚本和图片在同一个文件夹,所以只能使用没有路径的文件名,例如'cat.png' 【参考方案1】:

哈哈! 我已经正确设置了所有内容,但唯一出错的是,在下载文件时,我只是重命名了文件格式,而没有实际将它们转换为所需的图像文件格式。 这是导致错误的问题。 我使用在线转换器来转换图像,一切正常。 我了解到重命名不会改变文件的内部格式,因此有必要使用转换器将它们转换为适当的格式。

如果我错了,请纠正我。

谢谢!

【讨论】:

你也可以删除这个Q来代替 虽然您写的内容是正确的,但格式不正确不会给出您在问题中提出的错误。未找到文件错误与文件 name 而非文件 format 相关。

以上是关于如何使用 PYTHON 的“tkinter”模块在画布上显示图像,特别适用于 linux?的主要内容,如果未能解决你的问题,请参考以下文章

Python3 - tkinter 导入和使用模块

python - 如何在Python的Tkinter模块中使对话框窗口出现在最前面?

如何使用 python 3 和 tkinter 模块从右到左对齐菜单栏中的项目?

如何在 Python 2.7 中使用 tkinter 库 [关闭]

Tkinter 在 Python 3.6 中未知 [重复]

如何编码 tkinter “scrolledtext” 模块