2017-12-21 21 views
0

저는 wxpython과 wx.Choice를 사용하고 있습니다. 나는 그것을 묶으려고했지만 기능에 도달하지 못하고 작동하지 않는다. 또한이 Choice (그리고 이미 바인딩 한 상태)에 집중할 때 함수를 실행하지만 두 번 실행합니다. 그 이유는 무엇이며 어떻게 변경할 수 있습니까?wxpython 선택 키 다운 이벤트가 실행되지 않습니다.

Select=wx.Choice(parent, choices=SectorList,pos=pos,size=(100,25)) 
Select.Bind(wx.EVT_KEY_DOWN,self.OnInputCharPressSelect) 

답변

0

작은 실행 가능한 샘플이 없기 때문에 무엇을하는지 확신 할 수 없습니다.

import wx 


class MyPanel(wx.Panel): 

    def __init__(self, parent): 
     wx.Panel.__init__(self, parent) 

     txt = wx.TextCtrl(self) 
     self.choice_widget = wx.Choice(self, choices=['a', 'b', 'c']) 
     self.choice_widget.Bind(wx.EVT_KEY_DOWN, self.OnInputCharPressSelect) 

     main_sizer = wx.BoxSizer(wx.VERTICAL) 
     main_sizer.Add(txt, 0, wx.ALL, 5) 
     main_sizer.Add(self.choice_widget, 0, wx.ALL, 5) 

     self.SetSizer(main_sizer) 

    def OnInputCharPressSelect(self, event): 
     print('OnInputCharPressSelect fired') 

class MainFrame(wx.Frame): 

    def __init__(self): 
     wx.Frame.__init__(self, None, title='Choices') 

     panel = MyPanel(self) 

     self.Show() 


if __name__ == '__main__': 
    app = wx.App(False) 
    frame = MainFrame() 
    app.MainLoop() 

내가 조절 탭 TextCtrl 위젯에서 Choice 위젯으로, 바인딩 된 이벤트 처리기가 발생하지 않습니다, 올바른 예를 들면 다음과 같습니다. 또한 마우스를 사용하여 항목을 선택하면 실행되지 않습니다. 그렇게하려면 Choice 위젯을 EVT_CHOICE에 바인딩해야합니다.

OnInputCharPressSelect을 실행하려면 Choice 위젯을 선택 (강조 표시)하고 키보드의 키를 눌러야합니다. 이렇게하면 키를 누를 때마다 처리기가 한 번씩 실행됩니다.

이 코드는 wxPython 4.0.0b2 및 Python 3.6이 설치된 Window 7에서 테스트되었습니다.