tkinterがMacで動かない

tkinterでハマるポイントがありましたので、記録です。

```
import tkinter as tk
import ...

root = tk.Tk() # なぜかここで落ちる
```

PythonのtkinterでGUIを作るとき、Windowsでは動くのに、以下のようなエラーが出てMacでは動かない場合があります。

```
2019-03-27 23:05:40.010 python[1384:51780] -[NSApplication _setup:]: unrecognized selector sent to instance 0x7f8d42a81cf0
2019-03-27 23:05:40.014 python[1384:51780] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSApplication _setup:]: unrecognized selector sent to instance 0x7f8d42a81cf0'
*** First throw call stack:
(
        0   CoreFoundation                      0x00007fff2e090cf9 __exceptionPreprocess + 256
        1   libobjc.A.dylib                     0x00007fff58c25a17 objc_exception_throw + 48
        2   CoreFoundation                      0x00007fff2e10ab06 -[NSObject(NSObject) __retain_OA] + 0
        3   CoreFoundation                      0x00007fff2e0330ef ___forwarding___ + 1485
        4   CoreFoundation                      0x00007fff2e032a98 _CF_forwarding_prep_0 + 120
        5   libtk8.6.dylib                      0x000000010a44331d TkpInit + 413
        6   libtk8.6.dylib                      0x000000010a39b17e Initialize + 2622
        7   _tkinter.cpython-36m-darwin.so      0x00000001096fca16 _tkinter_create + 1174
        8   python                              0x000000010879b068 _PyCFunction_FastCallDict + 200
        9   python                              0x000000010887061f call_function + 143
        10  python                              0x000000010886e175 _PyEval_EvalFrameDefault + 46837
        11  python                              0x00000001088618c9 _PyEval_EvalCodeWithName + 425
        12  python                              0x00000001088712cc _PyFunction_FastCallDict + 364
        13  python                              0x0000000108719f80 _PyObject_FastCallDict + 320
        14  python                              0x00000001087415f8 method_call + 136
        15  python                              0x00000001087215ce PyObject_Call + 62
        16  python                              0x00000001087c25b5 slot_tp_init + 117
        17  python                              0x00000001087c6af1 type_call + 241
        18  python                              0x0000000108719ef1 _PyObject_FastCallDict + 177
        19  python                              0x0000000108870718 call_function + 392
        20  python                              0x000000010886e175 _PyEval_EvalFrameDefault + 46837
        21  python                              0x00000001088709dc fast_function + 188
        22  python                              0x000000010887067c call_function + 236
        23  python                              0x000000010886e175 _PyEval_EvalFrameDefault + 46837
        24  python                              0x00000001088618c9 _PyEval_EvalCodeWithName + 425
        25  python                              0x000000010885c129 builtin_exec + 345
        26  python                              0x000000010879b068 _PyCFunction_FastCallDict + 200
        27  python                              0x000000010887061f call_function + 143
        28  python                              0x000000010886e175 _PyEval_EvalFrameDefault + 46837
        29  python                              0x00000001088618c9 _PyEval_EvalCodeWithName + 425
        30  python                              0x0000000108870a8a fast_function + 362
        31  python                              0x000000010887067c call_function + 236
        32  python                              0x000000010886e175 _PyEval_EvalFrameDefault + 46837
        33  python                              0x00000001088618c9 _PyEval_EvalCodeWithName + 425
        34  python                              0x0000000108870a8a fast_function + 362
        35  python                              0x000000010887067c call_function + 236
        36  python                              0x000000010886e225 _PyEval_EvalFrameDefault + 47013
        37  python                              0x00000001088618c9 _PyEval_EvalCodeWithName + 425
        38  python                              0x0000000108870a8a fast_function + 362
        39  python                              0x000000010887067c call_function + 236
        40  python                              0x000000010886e225 _PyEval_EvalFrameDefault + 47013
        41  python                              0x00000001088709dc fast_function + 188
        42  python                              0x000000010887067c call_function + 236
        43  python                              0x000000010886e175 _PyEval_EvalFrameDefault + 46837
        44  python                              0x00000001088618c9 _PyEval_EvalCodeWithName + 425
        45  python                              0x0000000108870a8a fast_function + 362
        46  python                              0x000000010887067c call_function + 236
        47  python                              0x000000010886e175 _PyEval_EvalFrameDefault + 46837
        48  python                              0x00000001088618c9 _PyEval_EvalCodeWithName + 425
        49  python                              0x00000001088ba55c PyRun_FileExFlags + 252
        50  python                              0x00000001088b9a34 PyRun_SimpleFileExFlags + 372
        51  python                              0x00000001088e07c6 Py_Main + 3734
        52  python                              0x0000000108711f59 main + 313
        53  libdyld.dylib                       0x00007fff5a4533d5 start + 1
        54  ???                                 0x0000000000000009 0x0 + 9
)
libc++abi.dylib: terminating with uncaught exception of type NSException
Abort trap: 6
```

その場合には、以下のコードを書き加えると、動くようになりました。matplotlibは直接使用していないのですが、どこかで使用されているようです。

```python
import matplotlib
matplotlib.use('tkagg')
```