2017-03-08 80 views
0

我已經繼承了一些代碼使用kivy/tkinter/matplotlib在Windows上運行良好,但在osx上有一些問題。一個問題已經解決了in another question。我發現了一個NSException當我運行以下命令:在kivy與matplotlib和tkinter NSException

import tkinter 
# tkinter._test() 

import matplotlib 
matplotlib.use("TkAgg") 
from matplotlib import pyplot as plt 
import kivy.core.window 

from tkinter.filedialog import askopenfilename 

askopenfilename(initialdir='/', title="Open files") 

除非我打電話askopenfilename我不明白的例外。 現在我想「可能tkinter不工作」,所以我扔在最初的tkinter._test(),然後說,一切正常...當代碼事後繼續異常不會發生,一切運行精細。

所以我的問題是,通常這些NSExceptions的根和性質是什麼,以及tkinter._test()會做什麼導致它不會發生?

如何在沒有不需要的初始測試彈出窗口的情況下複製正在執行的操作?

拋出的異常是:

2017-03-08 15:16:00.199 Python[31489:260345] -[SDLApplication _setup:]: unrecognized selector sent to instance 0x1021727f0 
2017-03-08 15:16:00.203 Python[31489:260345] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[SDLApplication _setup:]: unrecognized selector sent to instance 0x1021727f0' 
*** First throw call stack: 
(
    0 CoreFoundation      0x00007fffa8716e7b __exceptionPreprocess + 171 
    1 libobjc.A.dylib      0x00007fffbd300cad objc_exception_throw + 48 
    ... 
    53 Python        0x0000000100000c34 Python + 3124 
) 
libc++abi.dylib: terminating with uncaught exception of type NSException 

回答

0

所以我覺得傻了,原因是僅僅是_test()創建了一個根窗口,和盛大的解決方案只是導入後創建一個根窗口:

import tkinter 
root = tkinter.Tk() 
root.withdraw()