>백엔드 개발 >파이썬 튜토리얼 >wxpython의 잘못된 Textctrl 캐리지 리턴 이벤트에 대한 솔루션

wxpython의 잘못된 Textctrl 캐리지 리턴 이벤트에 대한 솔루션

WBOY
WBOY원래의
2016-08-04 08:55:382364검색

이 문서의 예에서는 wxpython의 잘못된 Textctrl 캐리지 리턴 이벤트에 대한 솔루션을 설명합니다. 참고하실 수 있도록 모든 사람과 공유하세요. 자세한 내용은 다음과 같습니다.

오늘 wxptyhon의 Textctrl 컨트롤을 사용하여 클라이언트를 개발할 때 문제가 발생했습니다. HTML 양식의 논리에 따르면 Textctrl에서 Enter를 눌러 쿼리를 제출해야 하는데 wxpython의 Textctrl을 누르면 실제로는 매우 이상합니다. Tab. 다음 컨트롤로 이동합니다. 이 경우 쿼리를 완료하려면 마우스로 버튼을 클릭하거나 두 번 이상 눌러야 합니다.

Google에서 검색했지만 답을 찾지 못했지만 몇 가지 유용한 정보를 얻었습니다.

TextCtrl 지원 이벤트 유형:

EVT_TEXT: 이 이벤트는 사용자 입력이나 프로그램에서 SetValue()를 사용하여 텍스트가 변경된 경우 생성됩니다.

EVT_TEXT_ENTER: 이 이벤트는 사용자가 wx.TE_PROCESS_ENTER 스타일 텍스트 컨트롤에서 Enter 키를 누를 때 생성됩니다.

EVT_TEXT_URL: Windows 시스템에서 wx.TE_RICH 또는 wx.TE_RICH2 스타일이 설정되고 wx.TE_AUTO_URL 스타일도 설정된 경우 텍스트 컨트롤 내부의 URL이 발생하면 이 이벤트가 발생합니다. 마우스 이벤트가 발생할 때 트리거됩니다.

EVT_TEXT_MAXLEN: SetMaxLength()를 사용하여 컨트롤의 최대 길이를 지정한 경우 사용자가 더 긴 문자열을 입력하려고 하면 이 이벤트가 트리거됩니다.

예를 들어 이때 사용자에게 경고 메시지를 표시합니다.

wxptyon Demos의 예를 통해 마침내 해결책을 찾았습니다.

1. 인스턴스를 선언할 때 다음과 같은 스타일 속성을 추가해야 합니다.

wx.TextCtrl(self,style=wx.TE_PROCESS_ENTER)

2. TextCtrl의 Enter 이벤트를 바인딩합니다

처음에는 버튼식 바인딩 방식을 사용했는데 잘 안되네요

코드 복사 코드는 다음과 같습니다.
self.element_panel.searchInput.Bind(wx.EVT_TEXT_ENTER, self.onSearch)

올바른 선언 방법은 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.
self.Bind(wx.EVT_TEXT_ENTER, self.onSearch, self.element_panel.searchInput)

그런 다음 Frame 또는 Panel에서 해당 메소드를 선언합니다.

더 많은 Python 관련 콘텐츠에 관심이 있는 독자는 이 사이트의 특별 주제인 "Python 데이터 구조 및 알고리즘 자습서", "Python 소켓 프로그래밍 기술 요약", "Python 함수를 사용한 기술 요약", "Python 문자열 작업 기술" 요약", "Python 시작 및 고급 시작을 위한 클래식 자습서" 및 "Python 파일 및 디렉터리 작업 기술 요약"

이 기사가 Python 프로그래밍에 종사하는 모든 사람에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.