https://github.com/kcjengr/qtpyvcp/issues/new?title=TypeError%3A%20descriptor%20%27append%27%20requires%20a%20%27list%27%20object%20but%20received%20a%20%27str%27&body=%28Please%20fill%20in%20this%20issue%20template%20with%20as%20much%20information%20as%20you%20can%20about%20the%20%0Acircumstances%20under%20which%20the%20issue%20occurred%2C%20and%20the%20steps%20needed%20to%20reproduce%20it.%29%0A%0A%23%23%20Steps%20to%20reproduce%20the%20problem%0A%0A%28provide%20as%20detailed%20a%20step%20by%20step%20as%20you%20can%29%20%0A%0A%201.%0A%202.%0A%203.%0A%0A%23%23%20This%20is%20what%20I%20expected%20to%20happen%0A%0A%28explain%20what%20you%20thought%20should%20have%20happened%29%0A%0A%23%23%20This%20is%20what%20happened%20instead%0A%0A%28explain%20what%20happened%20instead%29%0A%0A%23%23%20It%20worked%20properly%20before%20this%0A%0A%28did%20it%20work%20before%3F%20what%20changed%3F%29%0A%0A%23%23%20Traceback%0A%0A%60%60%60python%0ATraceback%20%28most%20recent%20call%20last%29%3A%0A%20%20File%20%22/home/turboss/.local/bin/qtpyvcp%22%2C%20line%2011%2C%20in%20%3Cmodule%3E%0A%20%20%20%20load_entry_point%28%27qtpyvcp%27%2C%20%27console_scripts%27%2C%20%27qtpyvcp%27%29%28%29%0A%20%20File%20%22/home/turboss/.local/lib/python2.7/site-packages/pkg_resources/__init__.py%22%2C%20line%20487%2C%20in%20load_entry_point%0A%20%20%20%20return%20get_distribution%28dist%29.load_entry_point%28group%2C%20name%29%0A%20%20File%20%22/home/turboss/.local/lib/python2.7/site-packages/pkg_resources/__init__.py%22%2C%20line%202728%2C%20in%20load_entry_point%0A%20%20%20%20return%20ep.load%28%29%0A%20%20File%20%22/home/turboss/.local/lib/python2.7/site-packages/pkg_resources/__init__.py%22%2C%20line%202346%2C%20in%20load%0A%20%20%20%20return%20self.resolve%28%29%0A%20%20File%20%22/home/turboss/.local/lib/python2.7/site-packages/pkg_resources/__init__.py%22%2C%20line%202352%2C%20in%20resolve%0A%20%20%20%20module%20%3D%20__import__%28self.module_name%2C%20fromlist%3D%5B%27__name__%27%5D%2C%20level%3D0%29%0A%20%20File%20%22/home/turboss/Proyectos/qtpyvcp/qtpyvcp/__main__.py%22%2C%20line%2068%2C%20in%20%3Cmodule%3E%0A%20%20File%20%22/home/turboss/Proyectos/qtpyvcp/qtpyvcp/vcp_launcher.py%22%2C%20line%20112%2C%20in%20load_vcp%0A%20%20%20%20_load_vcp_from_entry_point%28vcp%2C%20opts%29%0A%20%20File%20%22/home/turboss/Proyectos/qtpyvcp/qtpyvcp/vcp_launcher.py%22%2C%20line%20157%2C%20in%20_load_vcp_from_entry_point%0A%20%20%20%20vcp.main%28opts%29%0A%20%20File%20%22/home/turboss/Proyectos/qtpyvcp/examples/probe_basic/__init__.py%22%2C%20line%2019%2C%20in%20main%0A%20%20%20%20qtpyvcp.run_vcp%28opts%2C%20VCP_CONFIG_FILE%29%0A%20%20File%20%22/home/turboss/Proyectos/qtpyvcp/qtpyvcp/__init__.py%22%2C%20line%20138%2C%20in%20run_vcp%0A%20%20%20%20launch_application%28opts%2C%20config%29%0A%20%20File%20%22/home/turboss/Proyectos/qtpyvcp/qtpyvcp/vcp_launcher.py%22%2C%20line%2064%2C%20in%20launch_application%0A%20%20%20%20loadWindows%28config%5B%27windows%27%5D%29%0A%20%20File%20%22/home/turboss/Proyectos/qtpyvcp/qtpyvcp/vcp_launcher.py%22%2C%20line%20186%2C%20in%20loadWindows%0A%20%20%20%20window%20%3D%20_initialize_object_from_dict%28window_dict%29%0A%20%20File%20%22/home/turboss/Proyectos/qtpyvcp/qtpyvcp/vcp_launcher.py%22%2C%20line%20180%2C%20in%20_initialize_object_from_dict%0A%20%20%20%20return%20obj%28%2Aargs%2C%20%2A%2Akwargs%29%0A%20%20File%20%22/home/turboss/Proyectos/qtpyvcp/examples/probe_basic/probe_basic.py%22%2C%20line%2018%2C%20in%20__init__%0A%20%20%20%20super%28ProbeBasic%2C%20self%29.__init__%28%2Aargs%2C%20%2A%2Akwargs%29%0A%20%20File%20%22/home/turboss/Proyectos/qtpyvcp/qtpyvcp/widgets/form_widgets/main_window.py%22%2C%20line%2046%2C%20in%20__init__%0A%20%20%20%20self.loadUi%28ui_file%29%0A%20%20File%20%22/home/turboss/Proyectos/qtpyvcp/qtpyvcp/widgets/form_widgets/main_window.py%22%2C%20line%20101%2C%20in%20loadUi%0A%20%20%20%20uic.loadUi%28ui_file%2C%20self%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/__init__.py%22%2C%20line%20226%2C%20in%20loadUi%0A%20%20%20%20return%20DynamicUILoader%28package%29.loadUi%28uifile%2C%20baseinstance%2C%20resource_suffix%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/Loader/loader.py%22%2C%20line%2072%2C%20in%20loadUi%0A%20%20%20%20return%20self.parse%28filename%2C%20resource_suffix%2C%20basedir%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py%22%2C%20line%201000%2C%20in%20parse%0A%20%20%20%20actor%28elem%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py%22%2C%20line%20807%2C%20in%20createUserInterface%0A%20%20%20%20self.traverseWidgetTree%28elem%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py%22%2C%20line%20785%2C%20in%20traverseWidgetTree%0A%20%20%20%20handler%28self%2C%20child%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py%22%2C%20line%20262%2C%20in%20createWidget%0A%20%20%20%20self.traverseWidgetTree%28elem%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py%22%2C%20line%20785%2C%20in%20traverseWidgetTree%0A%20%20%20%20handler%28self%2C%20child%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py%22%2C%20line%20482%2C%20in%20createLayout%0A%20%20%20%20self.traverseWidgetTree%28elem%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py%22%2C%20line%20785%2C%20in%20traverseWidgetTree%0A%20%20%20%20handler%28self%2C%20child%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py%22%2C%20line%20525%2C%20in%20handleItem%0A%20%20%20%20self.traverseWidgetTree%28elem%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py%22%2C%20line%20785%2C%20in%20traverseWidgetTree%0A%20%20%20%20handler%28self%2C%20child%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py%22%2C%20line%20482%2C%20in%20createLayout%0A%20%20%20%20self.traverseWidgetTree%28elem%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py%22%2C%20line%20785%2C%20in%20traverseWidgetTree%0A%20%20%20%20handler%28self%2C%20child%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py%22%2C%20line%20525%2C%20in%20handleItem%0A%20%20%20%20self.traverseWidgetTree%28elem%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py%22%2C%20line%20785%2C%20in%20traverseWidgetTree%0A%20%20%20%20handler%28self%2C%20child%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py%22%2C%20line%20482%2C%20in%20createLayout%0A%20%20%20%20self.traverseWidgetTree%28elem%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py%22%2C%20line%20785%2C%20in%20traverseWidgetTree%0A%20%20%20%20handler%28self%2C%20child%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py%22%2C%20line%20525%2C%20in%20handleItem%0A%20%20%20%20self.traverseWidgetTree%28elem%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py%22%2C%20line%20785%2C%20in%20traverseWidgetTree%0A%20%20%20%20handler%28self%2C%20child%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py%22%2C%20line%20262%2C%20in%20createWidget%0A%20%20%20%20self.traverseWidgetTree%28elem%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py%22%2C%20line%20785%2C%20in%20traverseWidgetTree%0A%20%20%20%20handler%28self%2C%20child%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py%22%2C%20line%20262%2C%20in%20createWidget%0A%20%20%20%20self.traverseWidgetTree%28elem%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py%22%2C%20line%20785%2C%20in%20traverseWidgetTree%0A%20%20%20%20handler%28self%2C%20child%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py%22%2C%20line%20482%2C%20in%20createLayout%0A%20%20%20%20self.traverseWidgetTree%28elem%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py%22%2C%20line%20785%2C%20in%20traverseWidgetTree%0A%20%20%20%20handler%28self%2C%20child%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py%22%2C%20line%20525%2C%20in%20handleItem%0A%20%20%20%20self.traverseWidgetTree%28elem%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py%22%2C%20line%20785%2C%20in%20traverseWidgetTree%0A%20%20%20%20handler%28self%2C%20child%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py%22%2C%20line%20482%2C%20in%20createLayout%0A%20%20%20%20self.traverseWidgetTree%28elem%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py%22%2C%20line%20785%2C%20in%20traverseWidgetTree%0A%20%20%20%20handler%28self%2C%20child%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py%22%2C%20line%20525%2C%20in%20handleItem%0A%20%20%20%20self.traverseWidgetTree%28elem%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py%22%2C%20line%20785%2C%20in%20traverseWidgetTree%0A%20%20%20%20handler%28self%2C%20child%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py%22%2C%20line%20262%2C%20in%20createWidget%0A%20%20%20%20self.traverseWidgetTree%28elem%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py%22%2C%20line%20785%2C%20in%20traverseWidgetTree%0A%20%20%20%20handler%28self%2C%20child%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py%22%2C%20line%20482%2C%20in%20createLayout%0A%20%20%20%20self.traverseWidgetTree%28elem%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py%22%2C%20line%20785%2C%20in%20traverseWidgetTree%0A%20%20%20%20handler%28self%2C%20child%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py%22%2C%20line%20525%2C%20in%20handleItem%0A%20%20%20%20self.traverseWidgetTree%28elem%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py%22%2C%20line%20785%2C%20in%20traverseWidgetTree%0A%20%20%20%20handler%28self%2C%20child%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py%22%2C%20line%20482%2C%20in%20createLayout%0A%20%20%20%20self.traverseWidgetTree%28elem%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py%22%2C%20line%20785%2C%20in%20traverseWidgetTree%0A%20%20%20%20handler%28self%2C%20child%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py%22%2C%20line%20525%2C%20in%20handleItem%0A%20%20%20%20self.traverseWidgetTree%28elem%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py%22%2C%20line%20785%2C%20in%20traverseWidgetTree%0A%20%20%20%20handler%28self%2C%20child%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py%22%2C%20line%20253%2C%20in%20createWidget%0A%20%20%20%20self.stack.push%28self.setupObject%28widget_class%2C%20parent%2C%20elem%29%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py%22%2C%20line%20217%2C%20in%20setupObject%0A%20%20%20%20obj%20%3D%20self.factory.createQObject%28clsname%2C%20name%2C%20args%2C%20is_attribute%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/objcreator.py%22%2C%20line%20124%2C%20in%20createQObject%0A%20%20%20%20return%20self._cpolicy.instantiate%28factory%2C%20%2Aargs%2C%20%2A%2Akwargs%29%0A%20%20File%20%22/usr/lib/python2.7/dist-packages/PyQt5/uic/Loader/qobjectcreator.py%22%2C%20line%20139%2C%20in%20instantiate%0A%20%20%20%20return%20clsObject%28%2Actor_args%29%0A%20%20File%20%22/home/turboss/Proyectos/qtpyvcp/qtpyvcp/widgets/input_widgets/tool_table.py%22%2C%20line%20354%2C%20in%20__init__%0A%20%20%20%20self.loadToolTable%28%29%0A%20%20File%20%22/home/turboss/Proyectos/qtpyvcp/qtpyvcp/widgets/input_widgets/tool_table.py%22%2C%20line%20383%2C%20in%20loadToolTable%0A%20%20%20%20self.tool_model.loadToolTable%28f%29%0A%20%20File%20%22/home/turboss/Proyectos/qtpyvcp/qtpyvcp/widgets/input_widgets/tool_table.py%22%2C%20line%20269%2C%20in%20loadToolTable%0A%20%20%20%20tool.append%28item%29%0ATypeError%3A%20descriptor%20%27append%27%20requires%20a%20%27list%27%20object%20but%20received%20a%20%27str%27%0A%60%60%60%0A%0A%23%23%20Options%0A%0A%60%60%60json%0A%7B%0A%20%20%20%20%22chooser%22%3A%20false%2C%20%0A%20%20%20%20%22config_file%22%3A%20%22/home/turboss/Proyectos/qtpyvcp/sim/custom_config.yml%22%2C%20%0A%20%20%20%20%22fullscreen%22%3A%20false%2C%20%0A%20%20%20%20%22help%22%3A%20false%2C%20%0A%20%20%20%20%22hide_menu_bar%22%3A%20false%2C%20%0A%20%20%20%20%22hide_status_bar%22%3A%20false%2C%20%0A%20%20%20%20%22ini%22%3A%20%22/home/turboss/Proyectos/qtpyvcp/sim/xyz.ini%22%2C%20%0A%20%20%20%20%22log_file%22%3A%20%22/home/turboss/Proyectos/qtpyvcp/sim/sim.log%22%2C%20%0A%20%20%20%20%22log_level%22%3A%20%22INFO%22%2C%20%0A%20%20%20%20%22maximize%22%3A%20false%2C%20%0A%20%20%20%20%22perfmon%22%3A%20false%2C%20%0A%20%20%20%20%22position%22%3A%20null%2C%20%0A%20%20%20%20%22pref_file%22%3A%20null%2C%20%0A%20%20%20%20%22qt_api%22%3A%20null%2C%20%0A%20%20%20%20%22size%22%3A%20null%2C%20%0A%20%20%20%20%22stylesheet%22%3A%20null%2C%20%0A%20%20%20%20%22theme%22%3A%20null%2C%20%0A%20%20%20%20%22vcp%22%3A%20%22probebasic%22%2C%20%0A%20%20%20%20%22version%22%3A%20false%0A%7D%0A%60%60%60%0A%0A%23%23%20System%20Info%0A%60%60%60%0A%20%2A%20Description%3A%09Debian%20GNU/Linux%209.6%20%28stretch%29%0A%20%2A%20Kernel%3A%204.9.0-8-amd64%0A%20%2A%20Qt%20version%3A%20v5.7.1%0A%20%2A%20Qt%20bindings%3A%20PyQt5%20v5.7%0A%20%2A%20LinuxCNC%20version%3A%20v2.8.0-pre1-4102-g530dd3f83%0A%20%2A%20QtPyVCP%20version%3A%20v0.1.11%2B42.gb32950ae.dirty%0A%60%60%60%0A%0A%23%23%20Attachments%0A%0APlease%20also%20find%20and%20attach%20the%20following%20files%2C%20along%20with%20any%20others%20that%20may%20be%20helpful%3A%0A%2A%20/home/turboss/Proyectos/qtpyvcp/sim/sim.log%0A%2A%20/home/turboss/Proyectos/qtpyvcp/sim/custom_config.yml%0A&&labels=bug,auto+generated