如何使用 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?的主要内容,如果未能解决你的问题,请参考以下文章
python - 如何在Python的Tkinter模块中使对话框窗口出现在最前面?
如何使用 python 3 和 tkinter 模块从右到左对齐菜单栏中的项目?