Input Value Checking and Transfer
wxPython provides a system of "Validators" and certain controls which are aware of Validators. When available, these controls allow your system to use an approach similar to a DocumentViewArchitecture, where data is acquired and updated automatically from data objects by the UI elements.
Using Basic Validators
- wxValidator class and customisation points Value checking
- Informing the user of failures/warnings Focusing on the failing control
Using validators with "non validator" controls
Rewriting TransferDataFromWindow and TransferDataToWindow
Recursive validation (automatically validating child windows)
Currently broken
Limitations and coverage
- Only available automatically in wxDialog subclasses (need to write something to call Validate, and Transfer if using another class). (Re-)writing dialog close/update methods to handle mixed Validator/non-validator controls
Example
(Re-)writing dialog close/update methods to handle mixed Validator/non-validator controls
Note that the following is untested (copied from working code and modified in the documentation). should test
def Validate( self, event ): '''Process an event for the okay button...''' # do validation for normal "Validator" controls if not wxWindow.Validate( self ): return false # now walk through the other controls ( for editor in self.controls: if hasattr( editor, 'Validate') and not editor.Validate( self ): return false def TransferDataFromWindow( self, ): if not wxWindow.TransferDataFromWindow( self ): return false for editor in self.controls: if hasattr( editor, 'TransferDataFromWindow'): if not editor.TransferDataFromWindow(): return false def TransferDataToWindow( self, ): if not wxWindow.TransferDataToWindow( self ): return false for editor in self.controls: if hasattr( editor, 'TransferDataToWindow'): if not editor.TransferDataToWindow(): return false
Display
xxx