-
Notifications
You must be signed in to change notification settings - Fork 64
Open
Description
Context: I ran start_test_app on an instance of a custom driver which contained a DictFeat and clicked its "Update" button. The following error occurred:
Traceback (most recent call last):
File "C:\Anaconda3\lib\site-packages\lantz\ui\widgets.py", line 508, in <lambda>
update.clicked.connect(lambda x: target.update(self.widgets_values_as_dict()))
File "C:\Anaconda3\lib\site-packages\lantz\ui\widgets.py", line 585, in widgets_values_as_dict
for widget in self.writable_widgets}
File "C:\Anaconda3\lib\site-packages\lantz\ui\widgets.py", line 585, in <dictcomp>
for widget in self.writable_widgets}
AttributeError: 'LabeledFeatWidget' object has no attribute '_feat'
Probable origin: LabeledFeatWidget object has no attribute _feat, as opposed to the MixinWidget it contains.
Probable fix: Refer to the widget contained in LabeledFeatWidget instead. Also in case of a DictFeatWidget, refer to its value_widget and change return dictionary values to dictionaries as suitable for a DictFeat.
Proposed fix: rewrite DriverTestWidget.widgets_values_as_dict() as
def widgets_values_as_dict(self):
"""Return a dictionary mapping each writable feat name to the current
value of the widget.
"""
return ({widget._widget._value_widget._feat.name:
{widget._widget._value_widget._feat_key:
widget._widget.value()}
for widget in self.writable_widgets}
if isinstance(widget._widget, DictFeatWidget)
else {widget._widget._feat.name: widget._widget.value()
for widget in self.writable_widgets})
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels