Разблокировка фокуса на неправильном представлении

#python #graphics #wxpython

#python #графика #wxpython

Вопрос:

У меня возникла проблема с попыткой открыть мой графический интерфейс ниже и получением ошибки, показанной ниже. Я сузил проблему до той части кода ниже, где я превращаю массив размером ~ 1,7 миллиметра, каждая запись которого содержит информацию о различной интенсивности пикселей rgb, в изображение размером 1300×1340 пикселей, а также в простой линейный рисунок.

Это ошибка, которую я получаю (это происходит, когда я устанавливаю для отображения фрейма значение True):

 2014-07-05 11:31:52.234 python[79783:707] Exception detected while handling key input.
 2014-07-05 11:31:52.235 python[79783:707] Unlocking Focus on wrong view (<wxNSView:      0x10a66ced0>), expected <wxNSView: 0x10a671280>
    2014-07-05 11:31:52.243 python[79783:707] (
    0   CoreFoundation                      0x00007fff8edc6b06 __exceptionPreprocess   198
    1   libobjc.A.dylib                     0x00007fff973923f0 objc_exception_throw   43
    2   CoreFoundation                      0x00007fff8edc68dc  [NSException raise:format:]
          204
    3   AppKit                              0x00007fff92f8b430 -[NSView unlockFocus]   213
    4   libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c24751d 
    _ZN24wxMacCoreGraphicsContext16SetNativeContextEP9CGContext   253
    5   libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c249854  
    _ZN24wxMacCoreGraphicsContextD0Ev   36
    6   libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c3073d3 _ZN10wxGCDCImplD2Ev   51
    7   libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c243917 _ZN14wxClientDCImplD0Ev   71
    8   libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c30203c _ZN10wxClientDCD0Ev   44
    9   _gdi_.so                            0x000000010d44dbfb _wrap_delete_DC   107
    10  _gdi_.so                            0x000000010d40baf4 PySwigObject_dealloc   644
    11  libpython2.7.dylib                  0x000000010005599f dict_dealloc   175
    12  libpython2.7.dylib                  0x0000000100078a72 subtype_dealloc   1154
    13  libpython2.7.dylib                  0x000000010003e67f frame_dealloc   495
    14  libpython2.7.dylib                  0x00000001000ca310 PyEval_EvalCodeEx   656
    15  libpython2.7.dylib                  0x0000000100040192 function_call   178
    16  libpython2.7.dylib                  0x000000010000ccb2 PyObject_Call   98
    17  libpython2.7.dylib                  0x000000010001f5b1 instancemethod_call   401
    18  libpython2.7.dylib                  0x000000010000ccb2 PyObject_Call   98
    19  libpython2.7.dylib                  0x00000001000c19e7 PyEval_CallObjectWithKeywords   
    87
    20  _core_.so                           0x000000010b40f768 
    _ZN12wxPyCallback12EventThunkerER7wxEvent   312
    21  libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c1ac4d4 
    _ZN12wxEvtHandler23ProcessEventIfMatchesIdERK21wxEventTableEntryBasePS_R7wxEvent   84
    22  libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c1ad5cf 
    _ZN12wxEvtHandler23SearchDynamicEventTableER7wxEvent   111
    23  libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c1ae738 
    _ZN12wxEvtHandler11TryHereOnlyER7wxEvent   40
    24  libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c1ae7eb 
    _ZN12wxEvtHandler19ProcessEventLocallyER7wxEvent   59
    25  libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c1ae855 
    _ZN12wxEvtHandler12ProcessEventER7wxEvent   69
    26  libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c1ae386 
    _ZN12wxEvtHandler18SafelyProcessEventER7wxEvent   22
    27  libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c3ec200 
    _ZNK12wxWindowBase17HandleWindowEventER7wxEvent   16
    28  libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c1f35b9 _ZN8wxWindow11MacDoRedrawEl   
    857
    29  libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c2cf4c5 
    _ZN17wxWidgetCocoaImpl8drawRectEPvP6NSViewS0_   629
    30  libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c2cfb96 
    _Z14wxOSX_drawRectP6NSViewP13objc_selector6CGRect   358
    31  AppKit                              0x00007fff92f7e064 -[NSView _drawRect:clip:]   
    4217
    32  AppKit                              0x00007fff92f7c6c1 -[NSView 
    _recursiveDisplayAllDirtyWithLockFocus:visRect:]   1656
    33  AppKit                              0x00007fff92f7cad9 -[NSView 
    _recursiveDisplayAllDirtyWithLockFocus:visRect:]   2704
    34  AppKit  0x00007fff92f7a6f2 -[NSView 
 _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] 
      817
    35  AppKit                              0x00007fff92f7a143 -[NSThemeFrame    
   _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:]    
      314
    36  AppKit                              0x00007fff92f75d6d -[NSView _displayRectIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:]   4675
    37  AppKit                              0x00007fff92f3fc93 -[NSView displayIfNeeded]   1830
    38  AppKit                              0x00007fff92ffca18 -[NSWindow _reallyDoOrderWindow:relativeTo:findKey:forCounter:force:isModal:]   1377
    39  AppKit                              0x00007fff92ffc038 -[NSWindow _doOrderWindow:relativeTo:findKey:forCounter:force:isModal:]   940
    40  AppKit                              0x00007fff92ffbc1f -[NSWindow orderWindow:relativeTo:]   159
    41  AppKit                              0x00007fff92ff46dc -[NSWindow makeKeyAndOrderFront:]   48
    42  libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c2b91c8 _ZN25wxNonOwnedWindowCocoaImpl4ShowEb   872
    43  libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c1e7341 _ZN16wxNonOwnedWindow4ShowEb   65
    44  _core_.so                           0x000000010b486691 _wrap_Window_Show   257
    45  libpython2.7.dylib                  0x00000001000c897b PyEval_EvalFrameEx   24347
    46  libpython2.7.dylib                  0x00000001000ca743 PyEval_EvalCodeEx   1731
    47  libpython2.7.dylib                  0x00000001000c8866 PyEval_EvalFrameEx   24070
    48  libpython2.7.dylib                  0x00000001000ca743 PyEval_EvalCodeEx   1731
    49  libpython2.7.dylib                  0x0000000100040192 function_call   178
    50  libpython2.7.dylib                  0x000000010000ccb2 PyObject_Call   98
    51  libpython2.7.dylib                  0x000000010001f5b1 instancemethod_call   401
    52  libpython2.7.dylib                  0x000000010000ccb2 PyObject_Call   98
    53  libpython2.7.dylib                  0x000000010007cac8 slot_tp_init   88
    54  libpython2.7.dylib                  0x000000010007b0fc type_call   188
    55  libpython2.7.dylib                  0x000000010000ccb2 PyObject_Call   98
    56  libpython2.7.dylib                  0x00000001000c6b74 PyEval_EvalFrameEx   16660
    57  libpython2.7.dylib                  0x00000001000ca743 PyEval_EvalCodeEx   1731
    58  libpython2.7.dylib                  0x0000000100040192 function_call   178
    59  libpython2.7.dylib                  0x000000010000ccb2 PyObject_Call   98
    60  libpython2.7.dylib                  0x000000010001f5b1 instancemethod_call   401
    61  libpython2.7.dylib                  0x000000010000ccb2 PyObject_Call   98
    62  libpython2.7.dylib                  0x00000001000c19e7 PyEval_CallObjectWithKeywords   87
    63  _core_.so                           0x000000010b40f768 
    _ZN12wxPyCallback12EventThunkerER7wxEvent   312
    64  libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c1ac4d4 
    _ZN12wxEvtHandler23ProcessEventIfMatchesIdERK21wxEventTableEntryBasePS_R7wxEvent   84
    65  libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c1ad5cf 
    _ZN12wxEvtHandler23SearchDynamicEventTableER7wxEvent   111
    66  libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c1ae738 
    _ZN12wxEvtHandler11TryHereOnlyER7wxEvent   40
    67  libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c1ae7eb 
    _ZN12wxEvtHandler19ProcessEventLocallyER7wxEvent   59
    68  libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c1ae855 
    _ZN12wxEvtHandler12ProcessEventER7wxEvent   69
    69  libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c3ed274    
    _ZN12wxWindowBase8TryAfterER7wxEvent   116
    70  libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c1ae933  
    _ZN12wxEvtHandler12ProcessEventER7wxEvent   291
    71  libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c1ae386 
    _ZN12wxEvtHandler18SafelyProcessEventER7wxEvent   22
    72  libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c3ec200
    _ZNK12wxWindowBase17HandleWindowEventER7wxEvent   16
    73  libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c22ddfb
    _ZN10wxTextCtrl6OnCharER10wxKeyEvent   1595
    74  libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c1ac4d4
     _ZN12wxEvtHandler23ProcessEventIfMatchesIdERK21wxEventTableEntryBasePS_R7wxEvent   84
    75  libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c1ae694
     _ZN16wxEventHashTable11HandleEventER7wxEventP12wxEvtHandler   132
    76  libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c1ae756
     _ZN12wxEvtHandler11TryHereOnlyER7wxEvent   70
    77  libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c1ae7eb
     _ZN12wxEvtHandler19ProcessEventLocallyER7wxEvent   59
    78  libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c1ae855
     _ZN12wxEvtHandler12ProcessEventER7wxEvent   69
    79  libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c1ae386 
   _ZN12wxEvtHandler18SafelyProcessEventER7wxEvent   22
    80  libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c3ec200
     _ZNK12wxWindowBase17HandleWindowEventER7wxEvent   16
    81  libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c1f7b43
    _ZN8wxWindow17OSXHandleKeyEventER10wxKeyEvent   51
    82  libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c2cfd2d
    _ZN17wxWidgetCocoaImpl17DoHandleCharEventEP7NSEventP8NSString   205
    83  libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c2bfd28 -[wxNSTextFieldEditor 
     insertText:]   120
    84  libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c2c093d -[wxNSTextField
    control:textView:doCommandBySelector:]   141
    85  AppKit                              0x00007fff92e37e64 -[NSTextField
    textView:doCommandBySelector:]   96
    86  AppKit                              0x00007fff92e37da8 -[NSTextView  
    doCommandBySelector:]   159
    87  AppKit                              0x00007fff92ebae6e -[
    NSKeyBindingManager(NSKeyBindingManager_MultiClients) interpretEventAsCommand:forClient:]   
       2200
    88  AppKit                              0x00007fff92eba2db -[NSTextInputContext 
    handleEvent:]   939
    89  AppKit                              0x00007fff92eb9ea7 -[NSView interpretKeyEvents:]  
    183
    90  AppKit                              0x00007fff92e06c97 -[NSTextView keyDown:]   723
    91  libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c2bfebf -[wxNSTextFieldEditor keyDown:] 
      111
    92  AppKit                              0x00007fff93022020 -[NSWindow sendEvent:]   9687
    93  libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c2b82dc -[wxNSWindow sendEvent:]   140
    94  AppKit                              0x00007fff9301d644 -[NSApplication sendEvent:]   
    5761
    95  libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c1c099a -[wxNSApplication sendEvent:]   
    74
    96  AppKit                              0x00007fff92f3321a -[NSApplication run]   636
    97  libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c2aa3b8 _ZN14wxGUIEventLoop8OSXDoRunEv 
      248
    98  libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c1782af _ZN13wxCFEventLoop5DoRunEv   31
    99  libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c0b0751 _ZN15wxEventLoopBase3RunEv   65
    100 libwx_osx_cocoau-3.0.0.0.0.dylib    0x000000010c075d97 
    _ZN16wxAppConsoleBase8MainLoopEv   103
    101 _core_.so                           0x000000010b40641c _ZN7wxPyApp8MainLoopEv   76
    102 _core_.so                           0x000000010b450d4f _wrap_PyApp_MainLoop   79
    103 libpython2.7.dylib                  0x00000001000c897b PyEval_EvalFrameEx   24347
    104 libpython2.7.dylib                  0x00000001000ca743 PyEval_EvalCodeEx   1731
    105 libpython2.7.dylib                  0x0000000100040192 function_call   178
    106 libpython2.7.dylib                  0x000000010000ccb2 PyObject_Call   98
    107 libpython2.7.dylib                  0x000000010001f5b1 instancemethod_call   401
    108 libpython2.7.dylib                  0x000000010000ccb2 PyObject_Call   98
    109 libpython2.7.dylib                  0x00000001000c6b74 PyEval_EvalFrameEx   16660
    110 libpython2.7.dylib                  0x00000001000c924b PyEval_EvalFrameEx   26603
    111 libpython2.7.dylib                  0x00000001000ca743 PyEval_EvalCodeEx   1731
    112 libpython2.7.dylib                  0x0000000100040192 function_call   178
    113 libpython2.7.dylib                  0x000000010000ccb2 PyObject_Call   98
    114 libpython2.7.dylib                  0x000000010001f5b1 instancemethod_call   401
    115 libpython2.7.dylib                  0x000000010000ccb2 PyObject_Call   98
    116 libpython2.7.dylib                  0x000000010007cac8 slot_tp_init   88
    117 libpython2.7.dylib                  0x000000010007b0fc type_call   188
    118 libpython2.7.dylib                  0x000000010000ccb2 PyObject_Call   98
    119 libpython2.7.dylib                  0x00000001000c6b74 PyEval_EvalFrameEx   16660
    120 libpython2.7.dylib                  0x00000001000ca743 PyEval_EvalCodeEx   1731
    121 libpython2.7.dylib                  0x00000001000caa36 PyEval_EvalCode   54
    122 libpython2.7.dylib                  0x00000001000f026b PyRun_InteractiveOneFlags   379
    123 libpython2.7.dylib                  0x00000001000f04ae PyRun_InteractiveLoopFlags   78
    124 libpython2.7.dylib                  0x00000001000f05ee PyRun_AnyFileExFlags   126
    125 libpython2.7.dylib                  0x0000000100107c05 Py_Main   3029
    126 python                              0x0000000100000f54 start   52
)
  

>

> Вот соответствующий код:

 def OnPaint(self, event):
    Image1 = wx.ClientDC(self.file1Image)  
    Image2 = wx.ClientDC(self.file2Image)
    Image3 = wx.ClientDC(self.trajectory)

    Image1.Clear()
    Image2.Clear()
    Image3.Clear()

    first = int(self.editFirstFileNum.GetValue()) - 1
    second = int(self.editSecondFileNum.GetValue()) - 1
    conversionFactor = 500         

    array1 = self.beam[first].cleanArray
    array2 = self.beam[second].cleanArray

    for i in range (0, len(array1)):
        red1 = blue1 = green1 = np.abs(array1[i][2] / conversionFactor) #Grayscale (no pun intended)
        red2 = blue2 = green2 = np.abs(array2[i][2] / conversionFactor)
        Image1.SetPen(wx.Pen(wx.Colour(red1, blue1, green1)))
        Image1.DrawPoint(np.abs(array1[i][0]), np.abs(array2[i][1]))
        Image2.SetPen(wx.Pen(wx.Colour(red2, blue2, green2)))
        Image2.DrawPoint(np.abs(array1[i][0]), np.abs(array2[i][1]))
        if i % 100000 == 0:
            print(i)
    print("okay!")        
    x1 = self.beam[first].center[0]
    y1 = self.beam[first].center[1]
    x2 = self.beam[second].center[0]
    y2 = self.beam[second].center[1]
    Image1.SetPen(wx.RED_PEN)
    Image1.DrawPoint(x1, y1)
    Image2.SetPen(wx.CYAN_PEN)
    Image2.DrawPoint(x2, y2)
    print("okay!")

    for i in range (first - 1, second   1):
        Image3.SetPen(wx.GREEN_PEN)
        Image3.DrawPoint(self.beam[i].center[0] , self.beam[i].center[1])
    if i < second:
        Image3.DrawLine(self.beam[i].center[0] , self.beam[i].centerIntensity[1], 
                       self.beam[i   1].center[0] , self.beam[i   1].centerIntensity[1])
  

Комментарии:

1. Exception detected while handling key input. звучит как проблема с обработчиком клавиатуры, а не проблема с Paint.