找到你要的答案

Q:NSException with Tkinter on mac

Q:Tkinter在Mac nsexception

I use Tkinter to create a GUI window and select a file. The code I use is the following:

Tk().withdraw()
file = askopenfilenames(title='Chose transition file')

When I run this alone, both in Windows and OSX, it runs. However, I need it to be a part of a larger script which can be found in this link (lines 88-89). This larger script runs correctly in a windows OS, but when I run it in an OSX, I get the following error:

Last login: Thu Apr 30 17:45:40 on ttys000
/Users/nueye/Desktop/plaidtomac/PyInstaller-2.1/Plaid/dist/Plaid ; exit;
MyMacBookPro15:~ nueye$ /Users/nueye/Desktop/plaidtomac/PyInstaller-2.1/Plaid/dist/Plaid ; exit;
running Plaid
2015-04-30 17:46:15.367 Plaid[526:903] -[NSApplication _setup:]: unrecognized selector sent to instance 0x101d41340
2015-04-30 17:46:15.368 Plaid[526:903] An uncaught exception was raised
2015-04-30 17:46:15.369 Plaid[526:903] -[NSApplication _setup:]: unrecognized selector sent to instance 0x101d41340
2015-04-30 17:46:15.370 Plaid[526:903] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSApplication _setup:]: unrecognized selector sent to instance 0x101d41340'
*** Call stack at first throw:
(
    0   CoreFoundation                      0x00007fff8685b7b4 __exceptionPreprocess + 180
    1   libobjc.A.dylib                     0x00007fff84e2c0f3 objc_exception_throw + 45
    2   CoreFoundation                      0x00007fff868b5110 +[NSObject(NSObject) doesNotRecognizeSelector:] + 0
    3   CoreFoundation                      0x00007fff8682d91f ___forwarding___ + 751
    4   CoreFoundation                      0x00007fff86829a68 _CF_forwarding_prep_0 + 232
    5   Tk                                  0x0000000117b0cb24 TkpInit + 545
    6   Tk                                  0x0000000117a829ee Initialize + 1648
    7   _tkinter.so                         0x0000000103b2ac0d Tcl_AppInit + 77
    8   _tkinter.so                         0x0000000103b29657 Tkinter_Create + 919
    9   Python                              0x00000001002bffad PyEval_EvalFrameEx + 21405
    10  Python                              0x00000001002c1fb3 PyEval_EvalCodeEx + 2115
    11  Python                              0x000000010023bac0 function_call + 176
    12  Python                              0x0000000100209eb2 PyObject_Call + 98
    13  Python                              0x000000010021c56d instancemethod_call + 365
    14  Python                              0x0000000100209eb2 PyObject_Call + 98
    15  Python                              0x00000001002b9957 PyEval_CallObjectWithKeywords + 87
    16  Python                              0x000000010021f85e PyInstance_New + 126
    17  Python                              0x0000000100209eb2 PyObject_Call + 98
    18  Python                              0x00000001002bdc60 PyEval_EvalFrameEx + 12368
    19  Python                              0x00000001002c1fb3 PyEval_EvalCodeEx + 2115
    20  Python                              0x00000001002c03f0 PyEval_EvalFrameEx + 22496
    21  Python                              0x00000001002c1fb3 PyEval_EvalCodeEx + 2115
    22  Python                              0x00000001002c20d6 PyEval_EvalCode + 54
    23  Python                              0x00000001002e7237 PyRun_StringFlags + 279
    24  Python                              0x00000001002e7321 PyRun_SimpleStringFlags + 65
    25  Plaid                               0x0000000157e1beac 0x0 + 5769379500
    26  Plaid                               0x0000000157e2fcb8 0x0 + 5769460920
    27  Plaid                               0x0000000157e1b7f4 0x0 + 5769377780
)
terminate called after throwing an instance of 'NSException'
Abort trap
logout

The code runs fine in OSX if I comment out the Tkinter code lines.

Could you please tell me what should I do to overcome this?

我用它来创建一个GUI窗口并选择一个文件。我使用的代码如下:

Tk().withdraw()
file = askopenfilenames(title='Chose transition file')

当我运行这一点,在Windows和OSX,它运行。然而,我需要的是一个更大的脚本,可以在这个链接的一部分(系88-89)。这个更大的脚本正确运行在Windows操作系统,但当我运行它在OSX,我收到以下错误:

Last login: Thu Apr 30 17:45:40 on ttys000
/Users/nueye/Desktop/plaidtomac/PyInstaller-2.1/Plaid/dist/Plaid ; exit;
MyMacBookPro15:~ nueye$ /Users/nueye/Desktop/plaidtomac/PyInstaller-2.1/Plaid/dist/Plaid ; exit;
running Plaid
2015-04-30 17:46:15.367 Plaid[526:903] -[NSApplication _setup:]: unrecognized selector sent to instance 0x101d41340
2015-04-30 17:46:15.368 Plaid[526:903] An uncaught exception was raised
2015-04-30 17:46:15.369 Plaid[526:903] -[NSApplication _setup:]: unrecognized selector sent to instance 0x101d41340
2015-04-30 17:46:15.370 Plaid[526:903] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSApplication _setup:]: unrecognized selector sent to instance 0x101d41340'
*** Call stack at first throw:
(
    0   CoreFoundation                      0x00007fff8685b7b4 __exceptionPreprocess + 180
    1   libobjc.A.dylib                     0x00007fff84e2c0f3 objc_exception_throw + 45
    2   CoreFoundation                      0x00007fff868b5110 +[NSObject(NSObject) doesNotRecognizeSelector:] + 0
    3   CoreFoundation                      0x00007fff8682d91f ___forwarding___ + 751
    4   CoreFoundation                      0x00007fff86829a68 _CF_forwarding_prep_0 + 232
    5   Tk                                  0x0000000117b0cb24 TkpInit + 545
    6   Tk                                  0x0000000117a829ee Initialize + 1648
    7   _tkinter.so                         0x0000000103b2ac0d Tcl_AppInit + 77
    8   _tkinter.so                         0x0000000103b29657 Tkinter_Create + 919
    9   Python                              0x00000001002bffad PyEval_EvalFrameEx + 21405
    10  Python                              0x00000001002c1fb3 PyEval_EvalCodeEx + 2115
    11  Python                              0x000000010023bac0 function_call + 176
    12  Python                              0x0000000100209eb2 PyObject_Call + 98
    13  Python                              0x000000010021c56d instancemethod_call + 365
    14  Python                              0x0000000100209eb2 PyObject_Call + 98
    15  Python                              0x00000001002b9957 PyEval_CallObjectWithKeywords + 87
    16  Python                              0x000000010021f85e PyInstance_New + 126
    17  Python                              0x0000000100209eb2 PyObject_Call + 98
    18  Python                              0x00000001002bdc60 PyEval_EvalFrameEx + 12368
    19  Python                              0x00000001002c1fb3 PyEval_EvalCodeEx + 2115
    20  Python                              0x00000001002c03f0 PyEval_EvalFrameEx + 22496
    21  Python                              0x00000001002c1fb3 PyEval_EvalCodeEx + 2115
    22  Python                              0x00000001002c20d6 PyEval_EvalCode + 54
    23  Python                              0x00000001002e7237 PyRun_StringFlags + 279
    24  Python                              0x00000001002e7321 PyRun_SimpleStringFlags + 65
    25  Plaid                               0x0000000157e1beac 0x0 + 5769379500
    26  Plaid                               0x0000000157e2fcb8 0x0 + 5769460920
    27  Plaid                               0x0000000157e1b7f4 0x0 + 5769377780
)
terminate called after throwing an instance of 'NSException'
Abort trap
logout

好的代码运行OSX如果我评论了Tkinter代码行。

你能告诉我该怎么做才能克服这个问题吗?

python  osx  tkinter