在 tkinter 中使用 PIL 打开图像时 Python 3.4 崩溃

标签 python tkinter osx-lion python-imaging-library

我不知道为什么,但即使对于最简单的脚本,python 也会崩溃,并且我收到以下消息:

"ActivePython 3.4 quit unexpectedly."

我在 Mac,OSX 10.7.5 上运行它。

我正在运行以测试它的代码是:

from tkinter import * 
from PIL import Image, ImageTk 

root = Tk()

image = Image.open("/Users/Name/Desktop/image.png")
photo = ImageTk.PhotoImage(image)
image_label = Label(root, width = 400, height = 400, image = photo)

root.mainloop()

我认为这是 tkinter 而不是 PIL 的问题,因为以下代码工作正常:

from PIL import Image, ImageTk 

image = Image.open("/Users/Name/Desktop/image.png")
image.show()

对为什么会这样有任何猜测吗?

我想我应该发布错误日志的一部分,不管它有多长,希望它能以某种方式帮助解决这个令人沮丧的问题。

Process:         Python [377]
Path:            /Library/Frameworks/Python.framework/Versions/3.4/Resources/Python.app/Contents/MacOS/Python
Identifier:      org.python.python
Version:         3.4.1 (3.4.1)
Code Type:       X86-64 (Native)
Parent Process:  Python [286]

Date/Time:       2015-05-26 19:43:38.689 +1000
OS Version:      Mac OS X 10.7.5 (11G63)
Report Version:  9

Interval Since Last Report:          17865335 sec
Crashes Since Last Report:           138
Per-App Interval Since Last Report:  152 sec
Per-App Crashes Since Last Report:   18
Anonymous UUID:                      7F4893CF-A95E-4ED6-85E7-2B6A5A32AC0C

Crashed Thread:  0  Dispatch queue: com.apple.main-thread

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000050

VM Regions Near 0x50:
--> 
    __TEXT                 0000000100000000-0000000100001000 [    4K] r-x/rwx SM=COW  /Library/Frameworks/Python.framework/Versions/3.4/Resources/Python.app/Contents/MacOS/Python

Application Specific Information:
objc[377]: garbage collection is OFF

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   Tk                              0x0000000105332fb6 Tk_GetImageMasterData + 18
1   Tk                              0x0000000105340fbf Tk_FindPhoto + 17
2   _imagingtk.so                   0x000000010305caec PyImagingPhotoPut + 92
3   Tcl                             0x00000001051df261 TclInvokeStringCommand + 121
4   Tcl                             0x00000001010714b1 TclEvalObjvInternal + 782
5   Tcl                             0x00000001010726a3 Tcl_EvalObjv + 66
6   _tkinter.so                     0x00000001007f1ace Tkapp_Call + 190
7   org.python.python               0x00000001000e542b PyEval_EvalFrameEx + 31291
8   org.python.python               0x00000001000e665d PyEval_EvalCodeEx + 2349
9   org.python.python               0x00000001000e51f7 PyEval_EvalFrameEx + 30727
10  org.python.python               0x00000001000e665d PyEval_EvalCodeEx + 2349
11  org.python.python               0x000000010003f76a function_call + 186
12  **org.python.python                 0x000000010000da08 PyObject_Call + 104
13  org.python.python               0x000000010002941c method_call + 140
14  org.python.python               0x000000010000da08 PyObject_Call + 104
15  org.python.python               0x0000000100078651 slot_tp_init + 81
16  org.python.python               0x00000001000736c4 type_call + 212
17  org.python.python               0x000000010000da08 PyObject_Call + 104
18  org.python.python               0x00000001000e1c3f PyEval_EvalFrameEx + 16975
19  org.python.python               0x00000001000e665d PyEval_EvalCodeEx + 2349
20  org.python.python               0x00000001000e671f PyEval_EvalCode + 63
21  org.python.python               0x00000001000dae3e builtin_exec + 206
22  org.python.python               0x00000001000e542b PyEval_EvalFrameEx + 31291
23  org.python.python               0x00000001000e665d PyEval_EvalCodeEx + 2349
24  org.python.python               0x000000010003f76a function_call + 186
25  org.python.python               0x000000010000da08 PyObject_Call + 104
26  org.python.python               0x00000001000e0ffe PyEval_EvalFrameEx + 13838
27  org.python.python               0x00000001000e665d PyEval_EvalCodeEx + 2349
28  org.python.python               0x00000001000e51f7 PyEval_EvalFrameEx + 30727
29  org.python.python               0x00000001000e665d PyEval_EvalCodeEx + 2349
30  org.python.python               0x00000001000e671f PyEval_EvalCode + 63
31  org.python.python               0x00000001001111e7 PyRun_StringFlags + 183
32  org.python.python               0x0000000100111271 PyRun_SimpleStringFlags + 65
33  org.python.python               0x0000000100127e55 Py_Main + 1445
34  org.python.python               0x0000000100000e32 0x100000000 + 3634
35  org.python.python               0x0000000100000c84 0x100000000 + 3204**

最佳答案

我在 github 上发布了我的问题,用户“radarhere”向我指出了解决方案。

Tk 扩展库有时会链接到/System/Library/Frameworks 而不是/Library/Frameworks。可能有更优雅的方法来执行此操作,但我只是简单地重命名了路径 System/Library/Frameworks 中的 Tcl.frameworks 和 TK.frameworks 文件夹,瞧!没有 python 崩溃,图像按预期显示。

关于在 tkinter 中使用 PIL 打开图像时 Python 3.4 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30436924/

相关文章:

python - 在 ndim(第四个轴)中堆叠数组并使用 numpy 应用旋转

python - 对于DBSCAN python,是否必须同时进行标准化和规范化?

python - 只应打开一扇 window 时却打开了两扇 window

Python/Tkinter : expanding fontsize dynamically to fill frame

ruby - 错误: Rack app won't run -- bundler/setup

android - 在 Android ADT r21.1 新 Activity 向导中禁用 "Finish"按钮

mysql - 如何在 Mac OS Lion 上从命令行启动 MySQL 服务器?

python - 我想使用 wget 和变量作为参数

python - 在 Python 错误后保持 Windows 控制台打开

Python 2.7 盲人可访问性