Home  >  Article  >  Backend Development  >  Solution to the invalid Textctrl carriage return event in wxpython

Solution to the invalid Textctrl carriage return event in wxpython

WBOY
WBOYOriginal
2016-08-04 08:55:382305browse

The example in this article describes the solution to the invalid Textctrl carriage return event in wxpython. Share it with everyone for your reference, the details are as follows:

Today I encountered a problem when developing a client using wxptyhon's Textctrl control. According to the logic of HTML forms, we should submit the query by pressing Enter in Textctrl. However, wxpython's Textctrl is very strange. Pressing Enter actually jumps like a Tab. Go to the next control. In this case, to complete the query, you either need to click the button with the mouse, or you need to press it twice or more.

I Googled it, but there was no answer, but I got some useful information:

TextCtrl supported event types:

EVT_TEXT: This event is generated when the text is changed due to user input or using SetValue() in the program.

EVT_TEXT_ENTER: This event is generated when the user presses the Enter key in a wx.TE_PROCESS_ENTER style text control.

EVT_TEXT_URL: If on a Windows system, the wx.TE_RICH or wx.TE_RICH2 style is set, and the wx.TE_AUTO_URL style is also set, then when a mouse event occurs on the URL within the text control, the The event is triggered.

EVT_TEXT_MAXLEN: If the maximum length of the control is specified using SetMaxLength(), then this event is triggered when the user attempts to enter a longer string.

For example, display a warning message to the user at this time.

With the example of wxptyon Demos, I finally figured out the solution:

1. When declaring an instance, you need to add the style attribute, such as:

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

2. Bind the Enter event of TextCtrl

At first I used a button-like binding method, but it didn’t work

Copy the code The code is as follows:
self.element_panel.searchInput.Bind(wx.EVT_TEXT_ENTER, self.onSearch)

The correct way of declaration should be:

Copy code The code is as follows:
self.Bind(wx.EVT_TEXT_ENTER, self.onSearch, self.element_panel.searchInput)

Then declare the corresponding method in Frame or Panel.

Readers who are interested in more Python-related content can check out the special topics on this site: "Python Data Structure and Algorithm Tutorial", "Python Socket Programming Skills Summary", "Python Function Usage Skills Summary", Python String Operation Skills Summary" , "Classic Tutorial for Getting Started and Advanced with Python" and "Summary of Python File and Directory Operation Skills"

I hope this article will be helpful to everyone in Python programming.

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn