def get_widget_value(widget: QtWidgets.QWidget) -> Any: """Returns value of form field. This determines the method appropriate for the type of widget. Args: widget: The widget for which to return value. Returns: value (can be bool, numeric, string, or None) """ if hasattr(widget, "isChecked"): val = widget.isChecked() elif hasattr(widget, "value"): val = widget.value() elif hasattr(widget, "currentText"): val = widget.currentText() elif hasattr(widget, "text"): val = widget.text() elif hasattr(widget, "currentIndex"): val = widget.currentIndex() else: val = None if widget.property("field_data_type") == "sci": val = float(val) elif widget.property("field_data_type") == "int": val = int(val) elif widget.property("field_data_type").startswith("file_"): val = None if val == "None" else val return val