def line_edit_binder(line_edit, property, obj): print type(obj) print dir(obj) init_val = getattr(obj,property) line_edit.setText(str(init_val)) property_type = type(init_val) validator, alignment = _line_edit_settings[property_type] line_edit.setAlignment(alignment) if validator : line_edit.setValidator(validator) def on_text_edited(text): try: value = property_type(text) except ValueError: value = None setattr(obj, property, value) line_edit.textEdited.connect(on_text_edited) def on_vm_changed(sender, prop_name): if prop_name == property: value = getattr(sender, property) if not line_edit.hasFocus(): line_edit.setText(str(value)) if prop_name == property+'_validity': validity = getattr(sender, property+'_validity') print validity GUI_helper.set_line_edit_validity(line_edit, validity) validity = getattr(obj, property+'_validity', None) if validity: GUI_helper.set_line_edit_validity(line_edit, validity) obj.property_changed.connect(on_vm_changed)
def on_vm_changed(sender, prop_name): if prop_name == property: value = getattr(sender, property) if not line_edit.hasFocus(): line_edit.setText(str(value)) if prop_name == property+'_validity': validity = getattr(sender, property+'_validity') print validity GUI_helper.set_line_edit_validity(line_edit, validity)