| 317 | self.widgets.append(field) |
| 318 | |
| 319 | def get(self): |
| 320 | valuelist = [] |
| 321 | for index, (label, value) in enumerate(self.data): |
| 322 | field = self.widgets[index] |
| 323 | if label is None: |
| 324 | # Separator / Comment |
| 325 | continue |
| 326 | elif tuple_to_qfont(value) is not None: |
| 327 | value = field.get_font() |
| 328 | elif isinstance(value, str) or mcolors.is_color_like(value): |
| 329 | value = str(field.text()) |
| 330 | elif isinstance(value, (list, tuple)): |
| 331 | index = int(field.currentIndex()) |
| 332 | if isinstance(value[0], (list, tuple)): |
| 333 | value = value[index][0] |
| 334 | else: |
| 335 | value = value[index] |
| 336 | elif isinstance(value, bool): |
| 337 | value = field.isChecked() |
| 338 | elif isinstance(value, Integral): |
| 339 | value = int(field.value()) |
| 340 | elif isinstance(value, Real): |
| 341 | value = float(str(field.text())) |
| 342 | elif isinstance(value, datetime.datetime): |
| 343 | datetime_ = field.dateTime() |
| 344 | if hasattr(datetime_, "toPyDateTime"): |
| 345 | value = datetime_.toPyDateTime() |
| 346 | else: |
| 347 | value = datetime_.toPython() |
| 348 | elif isinstance(value, datetime.date): |
| 349 | date_ = field.date() |
| 350 | if hasattr(date_, "toPyDate"): |
| 351 | value = date_.toPyDate() |
| 352 | else: |
| 353 | value = date_.toPython() |
| 354 | else: |
| 355 | value = literal_eval(str(field.text())) |
| 356 | valuelist.append(value) |
| 357 | return valuelist |
| 358 | |
| 359 | |
| 360 | class FormComboWidget(QtWidgets.QWidget): |