2013-12-17 10 views
2

내가 어설 션 오류 얻을 입력에 반응하는 wxPython을 TextCtrl을 만들려고 노력 : BindwxPython에 TextCtrl 주장 오류 : wx.wxEVT_COMMAND_TEXT_ENTER하지 않는 PyEventBinder 인스턴스

self.fileNameInput = wx.TextCtrl (self, style=wx.TE_PROCESS_ENTER) 
self.fileNameInput.Bind (wx.wxEVT_COMMAND_TEXT_ENTER, self.onRename) 

주장 오류로 종료를 :

assert isinstance(event, wx.PyEventBinder) 
AssertionError 

wx.wxEVT_COMMAND_TEXT_ENTER이 인스턴스가 아닌 것은 당연합니다. 숫자입니다.

파이썬 2와 3 사이의 이벤트 변경 사항에 대한 설명을 읽었습니다 - 라이브러리 버전을 혼합 했습니까?

답변

1

wx.EVT_TEXT_ENTER을 의미합니까?

>>> import wx 
>>> wx.wxEVT_COMMAND_TEXT_ENTER 
10165 
>>> wx.EVT_TEXT_ENTER 
<wx._core.PyEventBinder object at 0x000000000321C8D0> 

예 :

이전 대답
import wx 

class MyWindow(wx.Frame): 
    def __init__(self): 
     wx.Frame.__init__(self, None) 
     self.fileNameInput = wx.TextCtrl (self, style=wx.TE_PROCESS_ENTER) 
     self.fileNameInput.Bind(wx.EVT_TEXT_ENTER, self.onRename) 
    def onRename(self, e): 
     print('ENTER') 

app =wx.PySimpleApp() 
win = MyWindow() 
win.Show() 
app.MainLoop() 
+0

아야 , 바보 같은 것 - 나는 이것을 나중에 시험해 볼 것이다. 'http : // xoomer.virgilio.it/infinity77/wxPython/Widgets/wx.TextCtrl.html'의 문서를 보면 잘못된 부분을 복사했습니다 : "wx.EVT_TEXT_ENTER (id, func)라고 말합니다 \t 텍스트 컨트롤 (...)에서 엔터를 누르면 생성 된 wx.wxEVT_COMMAND_TEXT_ENTER 이벤트입니다. " – virtualnobi

+0

완벽 히트 - 이제는 잘 작동합니다. 감사 – virtualnobi

0

보완, 여기에 어떤 EVT 위해 일하는 사람은 ... 나는 비슷한 문제가 있고,의 정확한 이름을 찾기 위해 시간이 좀 걸렸지입니다 행사. 소스 코드 검사, 파일 WX의 \의 core.py 내 경우, 대부분의 전환이 있습니다 귀하의 경우에는

EVT_LISTBOX_DCLICK = wx.PyEventBinder(wxEVT_COMMAND_LISTBOX_DOUBLECLICKED, 1) 

을가 파일에 WX \ _controls.py :

EVT_TEXT_ENTER = wx.PyEventBinder(wxEVT_COMMAND_TEXT_ENTER, 1)