在 python 3 上使用 tkinter 打开图像
Posted
技术标签:
【中文标题】在 python 3 上使用 tkinter 打开图像【英文标题】:Opening images using tkinter on python 3 【发布时间】:2015-07-17 23:44:11 【问题描述】:我在 Python 3 上编写了以下(非常短的)代码:
from tkinter import *
from PIL import Image, ImageTk
image = Image.open("Trollface.jpg")
photo = ImageTk.PhotoImage(image)
canvas.create_image(0, 0, image = photo)
当我运行它时,我只是得到以下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\WinPython-64bit-3.4.3.4\python-3.4.3.amd64\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 685, in runfile
execfile(filename, namespace)
File "C:\WinPython-64bit-3.4.3.4\python-3.4.3.amd64\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 85, in execfile
exec(compile(open(filename, 'rb').read(), filename, 'exec'), namespace)
File "C:/Comp Sci/USB_Virus/trollface_puzzle_picture.py", line 12, in <module>
photo = ImageTk.PhotoImage(image)
File "C:\WinPython-64bit-3.4.3.4\python-3.4.3.amd64\lib\site-packages\PIL\ImageTk.py", line 112, in __init__
self.__photo = tkinter.PhotoImage(**kw)
File "C:\WinPython-64bit-3.4.3.4\python-3.4.3.amd64\lib\tkinter\__init__.py", line 3416, in __init__
Image.__init__(self, 'photo', name, cnf, master, **kw)
File "C:\WinPython-64bit-3.4.3.4\python-3.4.3.amd64\lib\tkinter\__init__.py", line 3357, in __init__
raise RuntimeError('Too early to create image')
RuntimeError: Too early to create image
我做错了什么?
【问题讨论】:
【参考方案1】:你需要先创建一个Tk
的实例:
root = Tk()
from tkinter import *
from PIL import Image, ImageTk
root = Tk()
canvas = Canvas(width=500, height=500, bg='white')
canvas.pack()
image = Image.open("Trollface.jpg")
photo = ImageTk.PhotoImage(image)
canvas.create_image(250, 250, image=photo)
root.mainloop()
上面的代码本质上来自from here。
【讨论】:
以上是关于在 python 3 上使用 tkinter 打开图像的主要内容,如果未能解决你的问题,请参考以下文章
使用python3在Raspberry Pi上打开和关闭Tkinter GUI
使用 tkinter 打开其他 Python 3 文件 [重复]
使用python 3.5在centos 6.5上安装tkinter
在使用 Python 3 的 Mac 上没有名为“_tkinter”的模块