Code Monkey home page Code Monkey logo

qtpyvcp's Introduction

QtPyVCP - QtPy Virtual Control Panel

![Travis CI][Travis-badge] ![pypi version][pypi-badge] ![LinuxCNC 2.8][linuxcnc-badge]

QtPyVCP is a Qt and Python based framework for building virtual control panels for the LinuxCNC machine control.

The goal is to provide a no-code, drag-and-drop system for making simple VCPs, as well as a straightforward, flexible and extensible framework to aid in building complex VCPs.

Installation and Usage

See the documentation.

Development

Documentation and Help

Dependencies

  • LinuxCNC 2.9 or 2.10-pre^
  • Python 3.11^
  • Qt 5.15^
  • PyQt5 or PySide2

QtPyVCP is developed and tested using the Debian 11 x64 (bullseye). It should run on any system that can have PyQt5 installed, but Debian 11 x64 is the only OS that is officially supported.

DISCLAIMER

THE AUTHORS OF THIS SOFTWARE ACCEPT ABSOLUTELY NO LIABILITY FOR ANY HARM OR LOSS RESULTING FROM ITS USE. IT IS EXTREMELY UNWISE TO RELY ON SOFTWARE ALONE FOR SAFETY. Any machinery capable of harming persons must have provisions for completely removing power from all motors, etc, before persons enter any danger area. All machinery must be designed to comply with local and national safety codes, and the authors of this software can not, and do not, take any responsibility for such compliance.

This software is released under the GPLv2.

qtpyvcp's People

Contributors

85vmh avatar adargel avatar awigen avatar connor9220 avatar dpslwk avatar fransefrikandel avatar hardware-crash avatar havardaasen avatar iromero91 avatar jethornton avatar joco-nz avatar jschilli avatar kevinastone avatar kurtjacobson avatar lcvette avatar ntulinux avatar snowgoer540 avatar sttts avatar turboss avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

qtpyvcp's Issues

Define/document a repeatable formula for building UIs to a debian file

With the shift in python to make local installs problematic we need to support UI developers in suppling an easily deployable version of their work. Debian .deb packages is the cleanest and most natural way to do this as we move to Debian 12 and beyond.

Defining a clear and reusable template with instructions for doing this will be key to support UI builders.

ImportError: No module named probe_basic_rc

(Please fill in this issue template with as much information as you can about the
circumstances under which the issue occurred, and the steps needed to reproduce it.)

Steps to reproduce the problem

(provide as detailed a step by step as you can)

1.loaded linuxcnc
2.then loaded python
3.then loaded probe basic
4.when rebooted i get this unhandled exception - import error

This is what I expected to happen

(explain what you thought should have happened)

This is what happened instead

(explain what happened instead)

It worked properly before this

(did it work before? what changed?)

Traceback

Traceback (most recent call last):
  File "/home/ian/.local/bin/probe_basic", line 11, in <module>
    load_entry_point('probe-basic', 'gui_scripts', 'probe_basic')()
  File "/home/ian/probe_basic/probe_basic/__init__.py", line 20, in main
    qtpyvcp.run_vcp(opts, VCP_CONFIG_FILE)
  File "/home/ian/.local/lib/python2.7/site-packages/qtpyvcp/__init__.py", line 27, in run_vcp
    run(*args, **kwargs)
  File "/home/ian/.local/lib/python2.7/site-packages/qtpyvcp/app/__init__.py", line 129, in run
    launch_application(opts, config)
  File "/home/ian/.local/lib/python2.7/site-packages/qtpyvcp/app/launcher.py", line 78, in launch_application
    loadWindows(config['windows'])
  File "/home/ian/.local/lib/python2.7/site-packages/qtpyvcp/app/launcher.py", line 228, in loadWindows
    window = _initialize_object_from_dict(window_dict)
  File "/home/ian/.local/lib/python2.7/site-packages/qtpyvcp/app/launcher.py", line 203, in _initialize_object_from_dict
    obj = _get_object_by_referance(provider)
  File "/home/ian/.local/lib/python2.7/site-packages/qtpyvcp/app/launcher.py", line 191, in _get_object_by_referance
    return getattr(importlib.import_module(modname), attrname)
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/home/ian/probe_basic/probe_basic/probe_basic.py", line 13, in <module>
    import probe_basic_rc
ImportError: No module named probe_basic_rc

Options

{
    "command_line_args": null, 
    "config_file": "/home/ian/linuxcnc/configs/probe_basic/custom_config.yml", 
    "confirm_exit": false, 
    "develop": false, 
    "fullscreen": null, 
    "help": false, 
    "hide_cursor": false, 
    "hide_menu_bar": false, 
    "hide_status_bar": false, 
    "info": false, 
    "ini": "/home/ian/linuxcnc/configs/probe_basic/probe_basic.ini", 
    "log_file": "/home/ian/linuxcnc/configs/probe_basic/sim.log", 
    "log_level": "DEBUG", 
    "maximize": null, 
    "perfmon": false, 
    "position": "0x0", 
    "qt_api": null, 
    "size": null, 
    "stylesheet": null, 
    "theme": null, 
    "version": false
}

System Info

 * Description:	Debian GNU/Linux 10 (buster)
 * Kernel: 4.19.0-17-rt-amd64
 * Qt version: v5.11.3
 * Qt bindings: PyQt5 v5.11.3
 * LinuxCNC version: v2.8.2-11-g6a3d0a434
 * QtPyVCP version: v0.3.19

Attachments

Please also find and attach the following files, along with any others that may be helpful:

  • /home/ian/linuxcnc/configs/probe_basic/sim.log
  • /home/ian/linuxcnc/configs/probe_basic/custom_config.yml

vcpchooser fails to load if no vcp is specified in command line arguments

Hi guys, i tried to setup qtpyvcp. I think the setup was fine, but i got the following error message:
File "/home/cnc/.local/lib/python2.7/site-packages/qtpyvcp/vcp_chooser/vcp_chooser.py", line 82, in get_vcp_data
with open(vcp_config_file, 'r') as fh:
IOError: [Errno 2] Datei oder Verzeichnis nicht gefunden: '/home/cnc/.local/lib/python2.7/site-packages/video_tests/qtpyvcp_test/config.yml'
Shutting down and cleaning up LinuxCNC...

name 'basestring' is not defined

Traceback (most recent call last):
  File "/home/cnc/.local/bin/qtpyvcp", line 8, in <module>
    sys.exit(main())
  File "/home/cnc/.local/lib/python3.9/site-packages/qtpyvcp/app/__init__.py", line 73, in main
    opts = parse_opts(__doc__)
  File "/home/cnc/.local/lib/python3.9/site-packages/qtpyvcp/utilities/opt_parser.py", line 104, in parse_opts
    opts = DotDict({arg.strip('-<>').replace('-', '_') : convType(value) for arg, value in raw_args.items()})
  File "/home/cnc/.local/lib/python3.9/site-packages/qtpyvcp/utilities/opt_parser.py", line 104, in <dictcomp>
    opts = DotDict({arg.strip('-<>').replace('-', '_') : convType(value) for arg, value in raw_args.items()})
  File "/home/cnc/.local/lib/python3.9/site-packages/qtpyvcp/utilities/opt_parser.py", line 65, in convType
    if isinstance(val, basestring):
NameError: name 'basestring' is not defined

MDIButton - regex failing when adding negative sign in front of parameter

PARSE_VARS = re.compile(r'(\w)#<([^>]+)>', re.I)

Using a command string of this style: G10L20P0X-#
causes the regex to return an empty result. The '-' breaks the recognition pattern.

A regex pattern like:
PARSE_VARS = re.compile(r'([a-zA-Z0-9_-]*)#<([^>]+)>', re.I)
produces the correct result. The * might be able to be replaced with +. The key is the group matching on the desired character ranges and the two specifics inside the [] with the * or + being used for a "greedy" match.

I have applied this fix to my local repo and it delivers the desired behaviour.

This simple code in a python interactive interpreter can prove the mechanic:

import re
cmd = "G10L20P0X-#<manualXYoffset>"
PARSE_VARS = re.compile(r'([a-zA-Z0-9_-]*)#<([^>]+)>', re.I)
vars = PARSE_VARS.findall(cmd)

Cheers.

Allow ability for a user of a UI to add one or more custom UI panels

Similar to the feature available in pyvcp UI designer could allow for the ability to add/insert in a user designed/define UI panel.

Concept:
This would be a UI file/python handler mix that could be dynamically loaded on UI start and added to some specified part of the master UI. The easiest example is a TabWidget gets a new tab holding this user loaded UI.

The specification for where this is loaded could be via custom config yaml file in the machines config dir or it could be (as pyvcp does) entries in the ini file.

Pyvcp allows for flexibility to embed more than just QT UI's. I am not sure that is necessary or desirable. Especially from a support angle. But perhaps worth considering.

ImportError: No module named probe_basic_rc

(Please fill in this issue template with as much information as you can about the
circumstances under which the issue occurred, and the steps needed to reproduce it.)

Steps to reproduce the problem

(provide as detailed a step by step as you can)

1.Fresh 2.8 LinuxCNC install
2. Install Probe_basic as per instructions
3.Ran Probe Basic

Got this error message.
Never had it working before. 1st installation attempt.

Traceback

Traceback (most recent call last):
  File "/home/cnc/.local/bin/probe_basic", line 11, in <module>
    load_entry_point('probe-basic', 'gui_scripts', 'probe_basic')()
  File "/home/cnc/probe_basic/probe_basic/__init__.py", line 20, in main
    qtpyvcp.run_vcp(opts, VCP_CONFIG_FILE)
  File "/home/cnc/.local/lib/python2.7/site-packages/qtpyvcp/__init__.py", line 27, in run_vcp
    run(*args, **kwargs)
  File "/home/cnc/.local/lib/python2.7/site-packages/qtpyvcp/app/__init__.py", line 123, in run
    launch_application(opts, config)
  File "/home/cnc/.local/lib/python2.7/site-packages/qtpyvcp/app/launcher.py", line 78, in launch_application
    loadWindows(config['windows'])
  File "/home/cnc/.local/lib/python2.7/site-packages/qtpyvcp/app/launcher.py", line 228, in loadWindows
    window = _initialize_object_from_dict(window_dict)
  File "/home/cnc/.local/lib/python2.7/site-packages/qtpyvcp/app/launcher.py", line 203, in _initialize_object_from_dict
    obj = _get_object_by_referance(provider)
  File "/home/cnc/.local/lib/python2.7/site-packages/qtpyvcp/app/launcher.py", line 191, in _get_object_by_referance
    return getattr(importlib.import_module(modname), attrname)
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/home/cnc/probe_basic/probe_basic/probe_basic.py", line 12, in <module>
    import probe_basic_rc
ImportError: No module named probe_basic_rc

Options

{
    "command_line_args": null, 
    "config_file": "/home/cnc/linuxcnc/configs/probe_basic/probe_basic/custom_config.yml", 
    "confirm_exit": false, 
    "develop": false, 
    "fullscreen": null, 
    "help": false, 
    "hide_cursor": false, 
    "hide_menu_bar": false, 
    "hide_status_bar": false, 
    "info": false, 
    "ini": "/home/cnc/linuxcnc/configs/probe_basic/probe_basic/probe_basic.ini", 
    "log_file": "/home/cnc/linuxcnc/configs/probe_basic/probe_basic/sim.log", 
    "log_level": null, 
    "maximize": null, 
    "perfmon": false, 
    "position": "0x0", 
    "qt_api": null, 
    "size": null, 
    "stylesheet": null, 
    "theme": null, 
    "version": false
}

System Info

 * Description:	Debian GNU/Linux 10 (buster)
 * Kernel: 4.19.0-10-rt-amd64
 * Qt version: v5.11.3
 * Qt bindings: PyQt5 v5.11.3
 * LinuxCNC version: v2.8.0
 * QtPyVCP version: v0.3.9

Attachments

Please also find and attach the following files, along with any others that may be helpful:

  • /home/cnc/linuxcnc/configs/probe_basic/probe_basic/sim.log
  • /home/cnc/linuxcnc/configs/probe_basic/probe_basic/custom_config.yml

AttributeError: 'Status' object has no attribute 'setJogMode'

(Please fill in this issue template with as much information as you can about the
circumstances under which the issue occurred, and the steps needed to reproduce it.)

Steps to reproduce the problem

(provide as detailed a step by step as you can)

  1. Define an ActionButton with machine.jog-mode.continuous
  2. Press the button

This is what I expected to happen

jog mode to change

This is what happened instead

Traceback (most recent call last):
File "/home/john/qtpyvcp/qtpyvcp/actions/init.py", line 92, in
widget.pressed.connect(lambda: method(*args, **kwargs))
File "/home/john/qtpyvcp/qtpyvcp/actions/machine_actions.py", line 978, in continuous
STATUS.setJogMode(True)
AttributeError: 'Status' object has no attribute 'setJogMode'

It worked properly before this

(did it work before? what changed?)

Traceback

Traceback (most recent call last):
  File "/home/john/qtpyvcp/qtpyvcp/actions/__init__.py", line 92, in <lambda>
    widget.pressed.connect(lambda: method(*args, **kwargs))
  File "/home/john/qtpyvcp/qtpyvcp/actions/machine_actions.py", line 978, in continuous
    STATUS.setJogMode(True)
AttributeError: 'Status' object has no attribute 'setJogMode'

Options

{
    "chooser": false, 
    "command_line_args": null, 
    "config_file": "/home/john/linuxcnc/configs/vcp-m/custom_config.yml", 
    "confirm_exit": false, 
    "fullscreen": false, 
    "help": false, 
    "hide_menu_bar": false, 
    "hide_status_bar": false, 
    "ini": "/home/john/linuxcnc/configs/vcp-m/vcp1.ini", 
    "log_file": "/home/john/linuxcnc/configs/vcp-m/sim.log", 
    "log_level": "INFO", 
    "maximize": false, 
    "perfmon": false, 
    "position": null, 
    "pref_file": null, 
    "qt_api": null, 
    "size": null, 
    "stylesheet": null, 
    "theme": null, 
    "vcp": "vcp1", 
    "version": false
}

System Info

 * Description:	Debian GNU/Linux 9.6 (stretch)
 * Kernel: 4.9.0-8-rt-amd64
 * Qt version: v5.7.1
 * Qt bindings: PyQt5 v5.7
 * LinuxCNC version: v2.8.0-pre1-4098-g0cb80c68a
 * QtPyVCP version: v0.1.11+43.gda32402.dirty

Attachments

Please also find and attach the following files, along with any others that may be helpful:

  • /home/john/linuxcnc/configs/vcp-m/sim.log
  • /home/john/linuxcnc/configs/vcp-m/custom_config.yml

ImportError: No module named QtQuickWidgets

(Please fill in this issue template with as much information as you can about the
circumstances under which the issue occurred, and the steps needed to reproduce it.)

Steps to reproduce the problem

(provide as detailed a step by step as you can)

This is what I expected to happen

(explain what you thought should have happened)

This is what happened instead

(explain what happened instead)

It worked properly before this

(did it work before? what changed?)

Traceback

Traceback (most recent call last):
  File "/home/renato/Downloads/kcjengr-qtpyvcp-bdff096/qtpyvcp/widgets/qtdesigner_plugin.py", line 38, in <module>
    from qtpyvcp.widgets.display_widgets.designer_plugins import *
  File "/home/renato/Downloads/kcjengr-qtpyvcp-bdff096/qtpyvcp/widgets/display_widgets/designer_plugins.py", line 46, in <module>
    from atc_widget.atc import DynATC
  File "/home/renato/Downloads/kcjengr-qtpyvcp-bdff096/qtpyvcp/widgets/display_widgets/atc_widget/atc.py", line 14, in <module>
    from qtpy.QtQuickWidgets import QQuickWidget
  File "/home/renato/.local/lib/python2.7/site-packages/qtpy/QtQuickWidgets.py", line 14, in <module>
    from PyQt5.QtQuickWidgets import *
ImportError: No module named QtQuickWidgets

Options

{}

System Info

 * Description:	Debian GNU/Linux 9.8 (stretch)
 * Kernel: 4.9.0-8-rt-amd64
 * Qt version: v5.7.1
 * Qt bindings: PyQt5 v5.7
 * LinuxCNC version: v2.8.0-pre1-4701-g5d6f7e9a4
 * QtPyVCP version: 0+unknown

Attachments

Please also find and attach the following files, along with any others that may be helpful:

  • None
  • None

IOError: [Errno 13] Keine Berechtigung: u'/home/dieter/linuxcnc/nc_files/examples/test.ngc'

(Please fill in this issue template with as much information as you can about the
circumstances under which the issue occurred, and the steps needed to reproduce it.)

Steps to reproduce the problem

(provide as detailed a step by step as you can)

This is what I expected to happen

(explain what you thought should have happened)

This is what happened instead

(explain what happened instead)

It worked properly before this

(did it work before? what changed?)

Traceback

Traceback (most recent call last):
  File "/home/dieter/.local/lib/python2.7/site-packages/qtpyvcp_conversational_gcode/widgets/base_widget.py", line 155, in on_post_to_file
    f.write_to_file(program_path)
  File "/home/dieter/.local/lib/python2.7/site-packages/qtpyvcp_conversational_gcode/ops/gcode_file.py", line 41, in write_to_file
    f = open(filename, 'w')
IOError: [Errno 13] Keine Berechtigung: u'/home/dieter/linuxcnc/nc_files/examples/test.ngc'

Options

{
    "command_line_args": null, 
    "config_file": "/home/dieter/linuxcnc/configs/Probe_Basic_Dieter/custom_config.yml", 
    "confirm_exit": false, 
    "develop": false, 
    "fullscreen": true, 
    "help": false, 
    "hide_cursor": false, 
    "hide_menu_bar": false, 
    "hide_status_bar": false, 
    "info": false, 
    "ini": "/home/dieter/linuxcnc/configs/Probe_Basic_Dieter/Probe_Basic_Dieter.ini", 
    "log_file": "/home/dieter/linuxcnc/configs/Probe_Basic_Dieter/sim.log", 
    "log_level": "WARN", 
    "maximize": true, 
    "perfmon": false, 
    "position": "0x0", 
    "qt_api": null, 
    "size": null, 
    "stylesheet": null, 
    "theme": null, 
    "version": false
}

System Info

 * Description:	Debian GNU/Linux 10 (buster)
 * Kernel: 4.19.0-13-rt-amd64
 * Qt version: v5.11.3
 * Qt bindings: PyQt5 v5.11.3
 * LinuxCNC version: v2.8.1-13-ga22256354
 * QtPyVCP version: v0.3.11+13.g894f2f65

Attachments

Please also find and attach the following files, along with any others that may be helpful:

  • /home/dieter/linuxcnc/configs/Probe_Basic_Dieter/sim.log
  • /home/dieter/linuxcnc/configs/Probe_Basic_Dieter/custom_config.yml

After M6 G43 without loaded file: 'NoneType' object has no attribute 'poly_data'

After M6 G43 without loaded file:

Traceback (most recent call last):
  File "/home/sts/src/qtpyvcp/qtpyvcp/widgets/display_widgets/vtk_backplot/vtk_backplot.py", line 666, in load_program
    self.canon.draw_lines()
  File "/home/sts/src/qtpyvcp/qtpyvcp/widgets/display_widgets/vtk_backplot/vtk_backplot.py", line 277, in draw_lines
    path_actor.poly_data.SetPoints(path_actor.points)
AttributeError: 'NoneType' object has no attribute 'poly_data'

AttributeError: 'NoneType' object has no attribute 'setNotify'

(Please fill in this issue template with as much information as you can about the
circumstances under which the issue occurred, and the steps needed to reproduce it.)

Steps to reproduce the problem

(provide as detailed a step by step as you can)

This is what I expected to happen

(explain what you thought should have happened)

This is what happened instead

(explain what happened instead)

It worked properly before this

(did it work before? what changed?)

Traceback

Traceback (most recent call last):
  File "/home/charon/.local/lib/python2.7/site-packages/qtpyvcp/plugins/notifications.py", line 126, in timerEvent
    self.captureMessage('error', msg)
  File "/home/charon/.local/lib/python2.7/site-packages/qtpyvcp/plugins/notifications.py", line 82, in captureMessage
    self.notification_dispatcher.setNotify(m_type, msg)
AttributeError: 'NoneType' object has no attribute 'setNotify'

Options

{
    "chooser": false, 
    "command_line_args": null, 
    "config_file": "/home/charon/linuxcnc/configs/sim.qtpyvcp/custom_config.yml", 
    "confirm_exit": false, 
    "develop": false, 
    "fullscreen": null, 
    "help": false, 
    "hide_cursor": false, 
    "hide_menu_bar": false, 
    "hide_status_bar": false, 
    "info": false, 
    "ini": "/home/charon/linuxcnc/configs/sim.qtpyvcp/mini.ini", 
    "log_file": "/home/charon/linuxcnc/configs/sim.qtpyvcp/sim.log", 
    "log_level": "WARN", 
    "maximize": null, 
    "perfmon": false, 
    "position": "0x0", 
    "qt_api": null, 
    "size": null, 
    "stylesheet": null, 
    "theme": null, 
    "vcp": "mini", 
    "version": false
}

System Info

 * Description:	Debian GNU/Linux 10 (buster)
 * Kernel: 4.19.0-11-rt-amd64
 * Qt version: v5.11.3
 * Qt bindings: PyQt5 v5.11.3
 * LinuxCNC version: v2.8.1
 * QtPyVCP version: v0.3.11

Attachments

Please also find and attach the following files, along with any others that may be helpful:

  • /home/charon/linuxcnc/configs/sim.qtpyvcp/sim.log
  • /home/charon/linuxcnc/configs/sim.qtpyvcp/custom_config.yml

AttributeError: 'Status' object has no attribute 'backplot_gcode_error'

(Please fill in this issue template with as much information as you can about the
circumstances under which the issue occurred, and the steps needed to reproduce it.)

Steps to reproduce the problem

(provide as detailed a step by step as you can)

This is what I expected to happen

(explain what you thought should have happened)

This is what happened instead

(explain what happened instead)

It worked properly before this

(did it work before? what changed?)

Traceback

Traceback (most recent call last):
  File "/home/vmc/qtpyvcp/qtpyvcp/widgets/display_widgets/gcode_backplot/gcode_backplot.py", line 96, in loadBackplot
    self.load(fname)
  File "/home/vmc/qtpyvcp/qtpyvcp/widgets/display_widgets/gcode_backplot/qbackplot.py", line 273, in load
    self.report_gcode_error(result, seq, filename)
  File "/home/vmc/qtpyvcp/qtpyvcp/widgets/display_widgets/gcode_backplot/gcode_backplot.py", line 136, in report_gcode_error
    STATUS.backplot_gcode_error.emit(msg)
AttributeError: 'Status' object has no attribute 'backplot_gcode_error'

Options

{
    "command_line_args": null, 
    "config_file": null, 
    "confirm_exit": null, 
    "develop": false, 
    "fullscreen": null, 
    "help": false, 
    "hide_cursor": false, 
    "hide_menu_bar": false, 
    "hide_status_bar": false, 
    "ini": "/home/vmc/linuxcnc/configs/VMC/VMC.ini", 
    "log_file": "/home/vmc/qtpyvcp.log", 
    "log_level": null, 
    "maximize": null, 
    "perfmon": false, 
    "position": null, 
    "pref_file": null, 
    "qt_api": null, 
    "size": null, 
    "stylesheet": null, 
    "theme": null, 
    "version": false
}

System Info

 * Description:	Debian GNU/Linux 9.12 (stretch)
 * Kernel: 4.9.0-12-rt-amd64
 * Qt version: v5.7.1
 * Qt bindings: PyQt5 v5.7
 * LinuxCNC version: v2.9.0-pre0-2099-gcf6945d9b
 * QtPyVCP version: v0.3.7+71.g21ee0b15

Attachments

Please also find and attach the following files, along with any others that may be helpful:

  • /home/vmc/qtpyvcp.log
  • None

AttributeError: 'NoneType' object has no attribute 'setNotify'

(Please fill in this issue template with as much information as you can about the
circumstances under which the issue occurred, and the steps needed to reproduce it.)

Steps to reproduce the problem

(provide as detailed a step by step as you can)

This is what I expected to happen

(explain what you thought should have happened)

This is what happened instead

(explain what happened instead)

It worked properly before this

(did it work before? what changed?)

Traceback

Traceback (most recent call last):
  File "/home/linuxcnc/.local/lib/python2.7/site-packages/qtpyvcp/plugins/notifications.py", line 126, in timerEvent
    self.captureMessage('error', msg)
  File "/home/linuxcnc/.local/lib/python2.7/site-packages/qtpyvcp/plugins/notifications.py", line 82, in captureMessage
    self.notification_dispatcher.setNotify(m_type, msg)
AttributeError: 'NoneType' object has no attribute 'setNotify'

Options

{
    "chooser": false, 
    "command_line_args": null, 
    "config_file": null, 
    "confirm_exit": null, 
    "develop": false, 
    "fullscreen": null, 
    "help": false, 
    "hide_cursor": false, 
    "hide_menu_bar": false, 
    "hide_status_bar": false, 
    "info": false, 
    "ini": "/home/linuxcnc/linuxcnc/configs/probe_basic/config/atc_sim/vmc_index.ini", 
    "log_file": "/home/linuxcnc/qtpyvcp.log", 
    "log_level": null, 
    "maximize": null, 
    "perfmon": false, 
    "position": null, 
    "qt_api": null, 
    "size": null, 
    "stylesheet": null, 
    "theme": null, 
    "vcp": "probe_basic", 
    "version": false
}

System Info

 * Description:	Debian GNU/Linux 10 (buster)
 * Kernel: 4.19.0-14-rt-amd64
 * Qt version: v5.11.3
 * Qt bindings: PyQt5 v5.11.3
 * LinuxCNC version: v2.8.1
 * QtPyVCP version: v0.3.12

Attachments

Please also find and attach the following files, along with any others that may be helpful:

  • /home/linuxcnc/qtpyvcp.log
  • None

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 27: ordinal not in range(128)

(Please fill in this issue template with as much information as you can about the
circumstances under which the issue occurred, and the steps needed to reproduce it.)

Steps to reproduce the problem

(provide as detailed a step by step as you can)

This is what I expected to happen

(explain what you thought should have happened)

This is what happened instead

(explain what happened instead)

It worked properly before this

(did it work before? what changed?)

Traceback

Traceback (most recent call last):
  File "/home/sebastian/qtpyvcp/qtpyvcp/widgets/qtdesigner/designer_plugin.py", line 91, in createWidget
    w = self.pluginClass()(parent)
  File "/home/sebastian/qtpyvcp/qtpyvcp/widgets/form_widgets/main_window.py", line 57, in __init__
    self.setMenuBar(self.buildMenuBar(menu))
  File "/home/sebastian/qtpyvcp/qtpyvcp/widgets/form_widgets/main_window.py", line 246, in buildMenuBar
    recursiveAddItems(menu_bar, menus)
  File "/home/sebastian/qtpyvcp/qtpyvcp/widgets/form_widgets/main_window.py", line 231, in recursiveAddItems
    recursiveAddItems(new_menu, items)
  File "/home/sebastian/qtpyvcp/qtpyvcp/widgets/form_widgets/main_window.py", line 235, in recursiveAddItems
    new_menu = _initialize_object_from_dict(item, parent=menu)
  File "/home/sebastian/qtpyvcp/qtpyvcp/app/launcher.py", line 208, in _initialize_object_from_dict
    return obj(*args, **kwargs)
  File "/home/sebastian/qtpyvcp/qtpyvcp/widgets/recent_files_menu.py", line 56, in __init__
    self.update(files or self.status.recent_files())
  File "/home/sebastian/qtpyvcp/qtpyvcp/widgets/recent_files_menu.py", line 61, in update
    fname = fname.encode('utf-8')
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 27: ordinal not in range(128)

Options

{}

System Info

 * Description:	Debian GNU/Linux 10 (buster)
 * Kernel: 4.19.0-13-rt-amd64
 * Qt version: v5.11.3
 * Qt bindings: PyQt5 v5.11.3
 * LinuxCNC version: v2.8.1
 * QtPyVCP version: v0.3.11+8.g11c816af

Attachments

Please also find and attach the following files, along with any others that may be helpful:

  • None
  • None

Problem with vtk pachake by installation

Hi People, something is wrong with the installation process. I just tried to follow the instruction:

https://qtpyvcp.kcjengr.com/install/installation.html

Related Topic on LinuxCNC forum:

https://forum.linuxcnc.org/41-guis/36765-qtpyvcp-error-vtk-version-stretch

pip install --editable . Obtaining file:///home/cnc/qtpyvcp Collecting docopt (from qtpyvcp==0.2.7+64.g24c3338) Using cached https://files.pythonhosted.org/packages/a2/55/8f8cab2afd404cf578136ef2cc5dfb50baa1761b68c9da1fb1e4eed343c9/docopt-0.6.2.tar.gz Collecting qtpy (from qtpyvcp==0.2.7+64.g24c3338) Using cached https://files.pythonhosted.org/packages/cd/fd/9972948f02e967b691cc0ca1f26124826a3b88cb38f412a8b7935b8c3c72/QtPy-1.9.0-py2.py3-none-any.whl Collecting pyudev (from qtpyvcp==0.2.7+64.g24c3338) Using cached https://files.pythonhosted.org/packages/bc/a2/31a07829acea8e70a28c247f43fa5d981229ae0f9edfeddedf52de00709b/pyudev-0.21.0.tar.gz Collecting psutil (from qtpyvcp==0.2.7+64.g24c3338) Using cached https://files.pythonhosted.org/packages/03/9a/95c4b3d0424426e5fd94b5302ff74cea44d5d4f53466e1228ac8e73e14b4/psutil-5.6.5.tar.gz Collecting HiYaPyCo (from qtpyvcp==0.2.7+64.g24c3338) Using cached https://files.pythonhosted.org/packages/8c/1d/80ac5ac1d91eb3c6f7e7c14e3aacedefc5febb712a04977583e54747d414/HiYaPyCo-0.4.14-py2.py3-none-any.whl Collecting pyopengl (from qtpyvcp==0.2.7+64.g24c3338) Using cached https://files.pythonhosted.org/packages/9c/1d/4544708aaa89f26c97cc09450bb333a23724a320923e74d73e028b3560f9/PyOpenGL-3.1.0.tar.gz Collecting vtk (from qtpyvcp==0.2.7+64.g24c3338) Could not find a version that satisfies the requirement vtk (from qtpyvcp==0.2.7+64.g24c3338) (from versions: ) No matching distribution found for vtk (from qtpyvcp==0.2.7+64.g24c3338)

QPalette has no attribute inactive

When Starting qtpyvcp with basic_probe interface the following error occurs then linuxcnc fails to start.

Traceback (most recent call last):
File "/home/huseyin/.local/bin/qtpyvcp", line 11, in
load_entry_point('qtpyvcp==0.2.2+5.g0de9d84', 'console_scripts', 'qtpyvcp')()
File "/home/huseyin/.local/lib/python2.7/site-packages/qtpyvcp/init.py", line 89, in main
run_vcp(opts, None)
File "/home/huseyin/.local/lib/python2.7/site-packages/qtpyvcp/init.py", line 112, in run_vcp
load_vcp(opts)
File "/home/huseyin/.local/lib/python2.7/site-packages/qtpyvcp/vcp_launcher.py", line 126, in load_vcp
_load_vcp_from_entry_point(vcp, opts)
File "/home/huseyin/.local/lib/python2.7/site-packages/qtpyvcp/vcp_launcher.py", line 171, in _load_vcp_from_entry_point
vcp.main(opts)
File "/home/huseyin/.local/lib/python2.7/site-packages/examples/probe_basic/init.py", line 19, in main
qtpyvcp.run_vcp(opts, VCP_CONFIG_FILE)
File "/home/huseyin/.local/lib/python2.7/site-packages/qtpyvcp/init.py", line 139, in run_vcp
launch_application(opts, config)
File "/home/huseyin/.local/lib/python2.7/site-packages/qtpyvcp/vcp_launcher.py", line 74, in launch_application
loadWindows(config['windows'])
File "/home/huseyin/.local/lib/python2.7/site-packages/qtpyvcp/vcp_launcher.py", line 200, in loadWindows
window = _initialize_object_from_dict(window_dict)
File "/home/huseyin/.local/lib/python2.7/site-packages/qtpyvcp/vcp_launcher.py", line 194, in _initialize_object_from_dict
return obj(*args, **kwargs)
File "/home/huseyin/.local/lib/python2.7/site-packages/examples/probe_basic/probe_basic.py", line 18, in init
super(ProbeBasic, self).init(*args, **kwargs)
File "/home/huseyin/.local/lib/python2.7/site-packages/qtpyvcp/widgets/form_widgets/main_window.py", line 44, in init
self.loadUi(ui_file)
File "/home/huseyin/.local/lib/python2.7/site-packages/qtpyvcp/widgets/form_widgets/main_window.py", line 103, in loadUi
uic.loadUi(ui_file, self)
File "/usr/lib/python2.7/dist-packages/PyQt5/uic/init.py", line 226, in loadUi
return DynamicUILoader(package).loadUi(uifile, baseinstance, resource_suffix)
File "/usr/lib/python2.7/dist-packages/PyQt5/uic/Loader/loader.py", line 72, in loadUi
return self.parse(filename, resource_suffix, basedir)
File "/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py", line 1000, in parse
actor(elem)
File "/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py", line 807, in createUserInterface
self.traverseWidgetTree(elem)
File "/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py", line 785, in traverseWidgetTree
handler(self, child)
File "/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py", line 262, in createWidget
self.traverseWidgetTree(elem)
File "/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py", line 785, in traverseWidgetTree
handler(self, child)
File "/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py", line 482, in createLayout
self.traverseWidgetTree(elem)
File "/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py", line 785, in traverseWidgetTree
handler(self, child)
File "/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py", line 525, in handleItem
self.traverseWidgetTree(elem)
File "/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py", line 785, in traverseWidgetTree
handler(self, child)
File "/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py", line 482, in createLayout
self.traverseWidgetTree(elem)
File "/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py", line 785, in traverseWidgetTree
handler(self, child)
File "/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py", line 525, in handleItem
self.traverseWidgetTree(elem)
File "/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py", line 785, in traverseWidgetTree
handler(self, child)
File "/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py", line 482, in createLayout
self.traverseWidgetTree(elem)
File "/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py", line 785, in traverseWidgetTree
handler(self, child)
File "/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py", line 525, in handleItem
self.traverseWidgetTree(elem)
File "/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py", line 785, in traverseWidgetTree
handler(self, child)
File "/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py", line 253, in createWidget
self.stack.push(self.setupObject(widget_class, parent, elem))
File "/usr/lib/python2.7/dist-packages/PyQt5/uic/uiparser.py", line 219, in setupObject
self.wprops.setProperties(obj, branch)
File "/usr/lib/python2.7/dist-packages/PyQt5/uic/properties.py", line 415, in setProperties
prop_value = self.convert(prop, widget)
File "/usr/lib/python2.7/dist-packages/PyQt5/uic/properties.py", line 378, in convert
return func(prop[0], **args)
File "/usr/lib/python2.7/dist-packages/PyQt5/uic/properties.py", line 284, in _palette
sub_palette = getattr(QtGui.QPalette, palette_elem.tag.title())
AttributeError: type object 'QPalette' has no attribute 'inactive'

Stacked Widget - axis_mask rule to change index not sticking

There appears to be a timing processing issue between the rule triggering and the UI loading.

The rule processes correctly with the correct axis count from status:axis_mask. However on PB the test config is 5 axis but only 3 are displayed. The issue being that the default index of the widget is 0 and this loads and clobbers the setting coming from the channel.

Fix applied and tested works.

ImportError: No module named probe_basic_rc (Vertical Probe Basic Screen)

(Please fill in this issue template with as much information as you can about the
circumstances under which the issue occurred, and the steps needed to reproduce it.)

Steps to reproduce the problem

(provide as detailed a step by step as you can)

  1. Opened the Vertical Probe Basic screen

Normal Probe Basic Screen works fine.

This is what I expected to happen

(explain what you thought should have happened)

This is what happened instead

(explain what happened instead)

It worked properly before this

(did it work before? what changed?)

Traceback

Traceback (most recent call last):
  File "/home/jacktest/.local/bin/qtpyvcp", line 11, in <module>
    load_entry_point('qtpyvcp==0.2.0+3.g358ef6e', 'console_scripts', 'qtpyvcp')()
  File "/home/jacktest/.local/lib/python2.7/site-packages/qtpyvcp/__init__.py", line 88, in main
    run_vcp(opts, None)
  File "/home/jacktest/.local/lib/python2.7/site-packages/qtpyvcp/__init__.py", line 111, in run_vcp
    load_vcp(opts)
  File "/home/jacktest/.local/lib/python2.7/site-packages/qtpyvcp/vcp_launcher.py", line 124, in load_vcp
    _load_vcp_from_entry_point(vcp, opts)
  File "/home/jacktest/.local/lib/python2.7/site-packages/qtpyvcp/vcp_launcher.py", line 169, in _load_vcp_from_entry_point
    vcp.main(opts)
  File "/home/jacktest/.local/lib/python2.7/site-packages/examples/probe_basic_vertical/__init__.py", line 19, in main
    qtpyvcp.run_vcp(opts, VCP_CONFIG_FILE)
  File "/home/jacktest/.local/lib/python2.7/site-packages/qtpyvcp/__init__.py", line 138, in run_vcp
    launch_application(opts, config)
  File "/home/jacktest/.local/lib/python2.7/site-packages/qtpyvcp/vcp_launcher.py", line 76, in launch_application
    loadWindows(config['windows'])
  File "/home/jacktest/.local/lib/python2.7/site-packages/qtpyvcp/vcp_launcher.py", line 198, in loadWindows
    window = _initialize_object_from_dict(window_dict)
  File "/home/jacktest/.local/lib/python2.7/site-packages/qtpyvcp/vcp_launcher.py", line 187, in _initialize_object_from_dict
    obj = _get_object_by_referance(provider)
  File "/home/jacktest/.local/lib/python2.7/site-packages/qtpyvcp/vcp_launcher.py", line 175, in _get_object_by_referance
    return getattr(importlib.import_module(modname), attrname)
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/home/jacktest/.local/lib/python2.7/site-packages/examples/probe_basic_vertical/probe_basic.py", line 8, in <module>
    import probe_basic_rc
ImportError: No module named probe_basic_rc

Options

{
    "chooser": false, 
    "command_line_args": null, 
    "config_file": null, 
    "confirm_exit": null, 
    "fullscreen": false, 
    "help": false, 
    "hide_menu_bar": false, 
    "hide_status_bar": false, 
    "ini": "/home/jacktest/linuxcnc/configs/sim.qtpyvcp/xyz-metric.ini", 
    "log_file": "/home/jacktest/linuxcnc/configs/sim.qtpyvcp/sim.log", 
    "log_level": "INFO", 
    "maximize": false, 
    "perfmon": false, 
    "position": null, 
    "pref_file": null, 
    "qt_api": null, 
    "size": null, 
    "stylesheet": null, 
    "theme": null, 
    "vcp": "probe_basic_vertical", 
    "version": false
}

System Info

 * Description:	Debian GNU/Linux 9.8 (stretch)
 * Kernel: 4.9.0-8-rt-amd64
 * Qt version: v5.7.1
 * Qt bindings: PyQt5 v5.7
 * LinuxCNC version: v2.8.0-pre1-4590-g584314c79
 * QtPyVCP version: v0.2.0+3.g358ef6e

Attachments

Please also find and attach the following files, along with any others that may be helpful:

  • /home/jacktest/linuxcnc/configs/sim.qtpyvcp/sim.log
  • None

Display Info and Error Notifications

Hi

If I have a little bit more errors or infos let say as usual, than I can see only first(old) notifications in the list and the new notifications will not be displayed at all (see screen shot).

notofocations problem

TypeError: setMaximum(self, a0: int): argument 1 has unexpected type 'float'

Steps to reproduce the problem

Current master branch,
Debian unstable running python3.10.9,
all missing dependencies added from sources
manually copied configs from source tree
start linuxcnc
chosing sim.qtpyvcp 3axis metric
selecting action
see window with backtrace
followed invitation to submit issue

It worked properly before this

First exploratory steps in QtPyVCP

Traceback

Traceback (most recent call last):
  File "/usr/bin/qtpyvcp", line 33, in <module>
    sys.exit(load_entry_point('qtpyvcp===python3-master-319.gfe86e6e6.dirty', 'console_scripts', 'qtpyvcp')())
  File "/usr/lib/python3/dist-packages/qtpyvcp/app/__init__.py", line 74, in main
    run(opts, None)
  File "/usr/lib/python3/dist-packages/qtpyvcp/app/__init__.py", line 102, in run
    load_vcp(opts)
  File "/usr/lib/python3/dist-packages/qtpyvcp/app/launcher.py", line 131, in load_vcp
    if _load_vcp_from_entry_point(vcp, opts):
  File "/usr/lib/python3/dist-packages/qtpyvcp/app/launcher.py", line 181, in _load_vcp_from_entry_point
    vcp.main(opts)
  File "/usr/lib/python3/dist-packages/examples/actions/__init__.py", line 23, in main
    qtpyvcp.app.run(opts, VCP_CONFIG_FILE)
  File "/usr/lib/python3/dist-packages/qtpyvcp/app/__init__.py", line 129, in run
    launch_application(opts, config)
  File "/usr/lib/python3/dist-packages/qtpyvcp/app/launcher.py", line 82, in launch_application
    app.initialiseWidgets()
  File "/usr/lib/python3/dist-packages/qtpyvcp/app/application.py", line 251, in initialiseWidgets
    w.initialize()
  File "/usr/lib/python3/dist-packages/qtpyvcp/widgets/input_widgets/setting_slider.py", line 145, in initialize
    self.setMaximum(self._setting.max_value)
TypeError: setMaximum(self, a0: int): argument 1 has unexpected type 'float'

Options

{
    "chooser": false,
    "command_line_args": null,
    "config_file": "/home/moeller/linuxcnc/configs/sim.qtpyvcp/custom_config.yml",
    "confirm_exit": false,
    "develop": false,
    "fullscreen": null,
    "help": false,
    "hide_cursor": false,
    "hide_menu_bar": false,
    "hide_status_bar": false,
    "info": false,
    "ini": "/home/moeller/linuxcnc/configs/sim.qtpyvcp/xyz-metric.ini",
    "log_file": "/home/moeller/linuxcnc/configs/sim.qtpyvcp/sim.log",
    "log_level": "WARN",
    "maximize": null,
    "perfmon": false,
    "position": null,
    "qt_api": null,
    "size": null,
    "stylesheet": null,
    "theme": null,
    "vcp": "actions",
    "version": false
}

System Info

 * b'Description:\tDebian GNU/Linux bookworm/sid'
 * Kernel: b'6.0.0-6-rt-amd64'
 * Qt version: v5.15.7
 * Qt bindings: PyQt5 v5.15.7
 * LinuxCNC version: v2.9.0~pre0+git20221105.ffb6bda926
 * QtPyVCP version: python3_master+319.gfe86e6e6.dirty

Attachments

Please also find and attach the following files, along with any others that may be helpful:

  • /home/moeller/linuxcnc/configs/sim.qtpyvcp/sim.log
  • /home/moeller/linuxcnc/configs/sim.qtpyvcp/custom_config.yml

ProbeBasic: ToolTable crashes when loading

Reported by boban_serb on matrix: linuxcnc.report.txt

It seems ProbeBasic crashes when clicking on the Tool tab.

I can't reproduce this on my my machine, so it may have something to do with the data in the tool table file.

Traceback:

Traceback (most recent call last):
  File "/home/cnc/.local/lib/python2.7/site-packages/qtpyvcp/widgets/input_widgets/tool_table.py", line 190, in data
    return self._data(self.tool_list[index.row()], index.column(), role)
  File "/home/cnc/.local/lib/python2.7/site-packages/qtpyvcp/widgets/input_widgets/tool_table.py", line 213, in _data
    return item[3]
IndexError: list index out of range

AttributeError: 'NoneType' object has no attribute 'poly_data'

(Please fill in this issue template with as much information as you can about the
circumstances under which the issue occurred, and the steps needed to reproduce it.)

Steps to reproduce the problem

(provide as detailed a step by step as you can)

  1. just traing to change tool in the main tab page

This is what I expected to happen

(explain what you thought should have happened)

This is what happened instead

(explain what happened instead)

It worked properly before this

(did it work before? what changed?)

Traceback

Traceback (most recent call last):
  File "/home/cnc/.local/lib/python2.7/site-packages/qtpyvcp/widgets/display_widgets/vtk_backplot/vtk_backplot.py", line 397, in load_program
    self.canon.draw_lines()
  File "/home/cnc/.local/lib/python2.7/site-packages/qtpyvcp/widgets/display_widgets/vtk_backplot/vtk_backplot.py", line 220, in draw_lines
    path_actor.poly_data.SetPoints(path_actor.points)
AttributeError: 'NoneType' object has no attribute 'poly_data'

Options

{
    "command_line_args": null, 
    "config_file": null, 
    "confirm_exit": null, 
    "develop": false, 
    "fullscreen": true, 
    "help": false, 
    "hide_cursor": false, 
    "hide_menu_bar": false, 
    "hide_status_bar": false, 
    "ini": "/home/cnc/linuxcnc/configs/GnevkoVCP/GnevkoVCP.ini", 
    "log_file": "/home/cnc/qtpyvcp.log", 
    "log_level": null, 
    "maximize": true, 
    "perfmon": false, 
    "position": "0x0", 
    "pref_file": null, 
    "qt_api": null, 
    "size": "1920x1080", 
    "stylesheet": null, 
    "theme": null, 
    "version": false
}

System Info

 * Description:	Debian GNU/Linux 10 (buster)
 * Kernel: 4.19.0-12-rt-amd64
 * Qt version: v5.11.3
 * Qt bindings: PyQt5 v5.11.3
 * LinuxCNC version: v2.9.0-pre0-2909-gca06fc273
 * QtPyVCP version: v0.3.6

Attachments

Please also find and attach the following files, along with any others that may be helpful:

  • /home/cnc/qtpyvcp.log
  • None

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 24: ordinal not in range(128)

(Please fill in this issue template with as much information as you can about the
circumstances under which the issue occurred, and the steps needed to reproduce it.)

Fresh install after running axis for a while
had trouble installing the conversational. had to skip and couldnt install manually. now on pb startup i get this
qtpyvcp.log
is this similar to issue #61 ?

Steps to reproduce the problem

(provide as detailed a step by step as you can)

This is what I expected to happen

(explain what you thought should have happened)

This is what happened instead

(explain what happened instead)

It worked properly before this

(did it work before? what changed?)

Traceback

Traceback (most recent call last):
  File "/home/leo/.local/bin/probe_basic", line 8, in <module>
    sys.exit(main())
  File "/home/leo/.local/lib/python2.7/site-packages/probe_basic/__init__.py", line 20, in main
    qtpyvcp.run_vcp(opts, VCP_CONFIG_FILE)
  File "/home/leo/.local/lib/python2.7/site-packages/qtpyvcp/__init__.py", line 27, in run_vcp
    run(*args, **kwargs)
  File "/home/leo/.local/lib/python2.7/site-packages/qtpyvcp/app/__init__.py", line 129, in run
    launch_application(opts, config)
  File "/home/leo/.local/lib/python2.7/site-packages/qtpyvcp/app/launcher.py", line 78, in launch_application
    loadWindows(config['windows'])
  File "/home/leo/.local/lib/python2.7/site-packages/qtpyvcp/app/launcher.py", line 228, in loadWindows
    window = _initialize_object_from_dict(window_dict)
  File "/home/leo/.local/lib/python2.7/site-packages/qtpyvcp/app/launcher.py", line 208, in _initialize_object_from_dict
    return obj(*args, **kwargs)
  File "/home/leo/.local/lib/python2.7/site-packages/probe_basic/probe_basic.py", line 24, in __init__
    super(ProbeBasic, self).__init__(*args, **kwargs)
  File "/home/leo/.local/lib/python2.7/site-packages/qtpyvcp/widgets/form_widgets/main_window.py", line 57, in __init__
    self.setMenuBar(self.buildMenuBar(menu))
  File "/home/leo/.local/lib/python2.7/site-packages/qtpyvcp/widgets/form_widgets/main_window.py", line 246, in buildMenuBar
    recursiveAddItems(menu_bar, menus)
  File "/home/leo/.local/lib/python2.7/site-packages/qtpyvcp/widgets/form_widgets/main_window.py", line 231, in recursiveAddItems
    recursiveAddItems(new_menu, items)
  File "/home/leo/.local/lib/python2.7/site-packages/qtpyvcp/widgets/form_widgets/main_window.py", line 235, in recursiveAddItems
    new_menu = _initialize_object_from_dict(item, parent=menu)
  File "/home/leo/.local/lib/python2.7/site-packages/qtpyvcp/app/launcher.py", line 208, in _initialize_object_from_dict
    return obj(*args, **kwargs)
  File "/home/leo/.local/lib/python2.7/site-packages/qtpyvcp/widgets/recent_files_menu.py", line 56, in __init__
    self.update(files or self.status.recent_files())
  File "/home/leo/.local/lib/python2.7/site-packages/qtpyvcp/widgets/recent_files_menu.py", line 61, in update
    fname = fname.encode('utf-8')
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 24: ordinal not in range(128)

Options

{
    "command_line_args": null, 
    "config_file": null, 
    "confirm_exit": null, 
    "develop": false, 
    "fullscreen": null, 
    "help": false, 
    "hide_cursor": false, 
    "hide_menu_bar": false, 
    "hide_status_bar": false, 
    "info": false, 
    "ini": "/home/leo/linuxcnc/configs/leos_cnc/leos_cnc.ini", 
    "log_file": "/home/leo/qtpyvcp.log", 
    "log_level": null, 
    "maximize": null, 
    "perfmon": false, 
    "position": null, 
    "qt_api": null, 
    "size": null, 
    "stylesheet": null, 
    "theme": null, 
    "version": false
}

System Info

 * Description:	Debian GNU/Linux 10 (buster)
 * Kernel: 4.19.0-24-rt-amd64
 * Qt version: v5.11.3
 * Qt bindings: PyQt5 v5.11.3
 * LinuxCNC version: v2.8.4
 * QtPyVCP version: v0.3.19+18.gee2deacc

Attachments

log
qtpyvcp.log

ImportError: cannot import name collections_abc

(Please fill in this issue template with as much information as you can about the
circumstances under which the issue occurred, and the steps needed to reproduce it.)

Steps to reproduce the problem

(provide as detailed a step by step as you can)

1.nstalled LinuxCNC Debian 2. 8.2 4.19.0-9-rt
2. installed Probe Basic as per quick start install

This is what I expected to happen

to launch probe basic

This is what happened instead

program loads for a second and then shows an error screen

It worked properly before this

new installation/home/jan/linuxcnc/configs/probe_basic/config/probe_basic/sim.log
sim.log
/home/jan/linuxcnc/configs/probe_basic/config/probe_basic/custom_config.yml

Traceback

Traceback (most recent call last):
  File "/home/jan/.local/bin/probe_basic", line 10, in <module>
    sys.exit(main())
  File "/home/jan/.local/lib/python2.7/site-packages/probe_basic/__init__.py", line 20, in main
    qtpyvcp.run_vcp(opts, VCP_CONFIG_FILE)
  File "/home/jan/.local/lib/python2.7/site-packages/qtpyvcp/__init__.py", line 27, in run_vcp
    run(*args, **kwargs)
  File "/home/jan/.local/lib/python2.7/site-packages/qtpyvcp/app/__init__.py", line 129, in run
    launch_application(opts, config)
  File "/home/jan/.local/lib/python2.7/site-packages/qtpyvcp/app/launcher.py", line 66, in launch_application
    loadPlugins(config['data_plugins'])
  File "/home/jan/.local/lib/python2.7/site-packages/qtpyvcp/app/launcher.py", line 222, in loadPlugins
    registerPluginFromClass(plugin_id=plugin_id, plugin_cls=cls, args=args, kwargs=kwargs)
  File "/home/jan/.local/lib/python2.7/site-packages/qtpyvcp/plugins/__init__.py", line 71, in registerPluginFromClass
    plugin_cls = getattr(importlib.import_module(modname), clsname)
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/home/jan/.local/lib/python2.7/site-packages/qtpyvcp/plugins/file_locations.py", line 11, in <module>
    from pyudev.pyqt5 import MonitorObserver
  File "/home/jan/.local/lib/python2.7/site-packages/pyudev/__init__.py", line 48, in <module>
    from pyudev.core import Context, Enumerator
  File "/home/jan/.local/lib/python2.7/site-packages/pyudev/core.py", line 39, in <module>
    from pyudev.device import Devices
  File "/home/jan/.local/lib/python2.7/site-packages/pyudev/device/__init__.py", line 26, in <module>
    from ._device import Attributes, Device, Devices, Tags
  File "/home/jan/.local/lib/python2.7/site-packages/pyudev/device/_device.py", line 37, in <module>
    from six.moves import collections_abc
ImportError: cannot import name collections_abc

Options

{
    "command_line_args": null, 
    "config_file": "/home/jan/linuxcnc/configs/probe_basic/config/probe_basic/custom_config.yml", 
    "confirm_exit": false, 
    "develop": false, 
    "fullscreen": null, 
    "help": false, 
    "hide_cursor": false, 
    "hide_menu_bar": false, 
    "hide_status_bar": false, 
    "info": false, 
    "ini": "/home/jan/linuxcnc/configs/probe_basic/config/probe_basic/probe_basic.ini", 
    "log_file": "/home/jan/linuxcnc/configs/probe_basic/config/probe_basic/sim.log", 
    "log_level": "DEBUG", 
    "maximize": null, 
    "perfmon": false, 
    "position": "0x0", 
    "qt_api": null, 
    "size": null, 
    "stylesheet": null, 
    "theme": null, 
    "version": false
}

System Info

 * Description:	Debian GNU/Linux 10 (buster)
 * Kernel: 4.19.0-18-rt-amd64
 * Qt version: v5.11.3
 * Qt bindings: PyQt5 v5.11.3
 * LinuxCNC version: v2.8.2-11-g6a3d0a434
 * QtPyVCP version: v0.3.19

Attachments

Please also find and attach the following files, along with any others that may be helpful:

  • /home/jan/linuxcnc/configs/probe_basic/config/probe_basic/sim.log
  • /home/jan/linuxcnc/configs/probe_basic/config/probe_basic/custom_config.yml

AttributeError: VTKBackPlot has no attribute named path_actors

(Please fill in this issue template with as much information as you can about the
circumstances under which the issue occurred, and the steps needed to reproduce it.)

Steps to reproduce the problem

(provide as detailed a step by step as you can)

This is what I expected to happen

(explain what you thought should have happened)

This is what happened instead

(explain what happened instead)

It worked properly before this

(did it work before? what changed?)

Traceback

Traceback (most recent call last):
  File "/home/rudi/.local/lib/python2.7/site-packages/qtpyvcp/widgets/display_widgets/vtk_backplot/vtk_backplot.py", line 409, in load_program
    for wcs_index, actor in self.path_actors.items():
  File "/home/rudi/.local/lib/python2.7/site-packages/vtk/qt/QVTKRenderWindowInteractor.py", line 309, in __getattr__
    " has no attribute named " + attr)
AttributeError: VTKBackPlot has no attribute named path_actors

Options

{
    "command_line_args": null, 
    "config_file": "/home/rudi/linuxcnc/configs/config/probe_basic/custom_config.yml", 
    "confirm_exit": false, 
    "develop": false, 
    "fullscreen": null, 
    "help": false, 
    "hide_cursor": false, 
    "hide_menu_bar": false, 
    "hide_status_bar": false, 
    "info": false, 
    "ini": "/home/rudi/linuxcnc/configs/config/probe_basic/probe_basic.ini", 
    "log_file": "/home/rudi/linuxcnc/configs/config/probe_basic/sim.log", 
    "log_level": "DEBUG", 
    "maximize": null, 
    "perfmon": false, 
    "position": "0x0", 
    "qt_api": null, 
    "size": null, 
    "stylesheet": null, 
    "theme": null, 
    "version": false
}

System Info

 * Description:	Debian GNU/Linux 10 (buster)
 * Kernel: 4.19.0-23-rt-amd64
 * Qt version: v5.11.3
 * Qt bindings: PyQt5 v5.11.3
 * LinuxCNC version: v2.8.4
 * QtPyVCP version: v0.3.19+18.gee2deacc

Attachments

Please also find and attach the following files, along with any others that may be helpful:

  • /home/rudi/linuxcnc/configs/config/probe_basic/sim.log

2023-02-06 18:10:58,499 - qtpyvcp - INFO - Logging to /home/rudi/linuxcnc/configs/config/probe_basic/sim.log
2023-02-06 18:10:58,499 - qtpyvcp - INFO - QtPyVCP Version: v0.3.19+18.gee2deacc
2023-02-06 18:10:58,535 - qtpyvcp - DEBUG - Qt Version: 5.11.3
2023-02-06 18:10:58,536 - qtpyvcp - DEBUG - Qt API: QT_API
2023-02-06 18:10:58,536 - qtpyvcp - DEBUG - QtPy Version: 1.11.3
2023-02-06 18:10:58,536 - qtpyvcp - DEBUG - Command line options:
{
"command_line_args": null,
"config_file": "/home/rudi/linuxcnc/configs/config/probe_basic/custom_config.yml",
"confirm_exit": false,
"develop": false,
"fullscreen": null,
"help": false,
"hide_cursor": false,
"hide_menu_bar": false,
"hide_status_bar": false,
"info": false,
"ini": "/home/rudi/linuxcnc/configs/config/probe_basic/probe_basic.ini",
"log_file": "/home/rudi/linuxcnc/configs/config/probe_basic/sim.log",
"log_level": "DEBUG",
"maximize": null,
"perfmon": false,
"position": "0x0",
"qt_api": null,
"size": null,
"stylesheet": null,
"theme": null,
"version": false
}
2023-02-06 18:10:58,730 - qtpyvcp.utilities.config_loader - DEBUG - Loading config files: ['/home/rudi/linuxcnc/configs/config/probe_basic/custom_config.yml', '/home/rudi/.local/lib/python2.7/site-packages/probe_basic/probe_basic.yml', '/home/rudi/.local/lib/python2.7/site-packages/qtpyvcp/yaml_lib/default_config.yml']
2023-02-06 18:10:59,105 - qtpyvcp.utilities.config_loader - DEBUG - Merged YAML config:

default_menubar:

  • title: File
    items:
    • title: '&Open ...'
      action: win.openFile
      shortcut: ctrl+o
    • title: '&Recent Files'
      provider: qtpyvcp.widgets.recent_files_menu:RecentFilesMenu
    • title: '&Reload'
      action: program.reload
    • title: '&Close'
      action: program.clear
    • title: Save &As
      action: null
    • separator
    • title: Edit ToolTable
      action: win.showDialog
      args:
      • tool_edit
    • separator
    • title: Exit
      action: app.exit
      shortcut: ctrl+q
  • title: Machine
    items:
    • title: Toggle E-Stop
      action: machine.estop.toggle
      shortcut: F1
    • title: Toggle Power
      action: machine.power.toggle
      shortcut: F2
    • separator
    • title: Run Program
      action: program.run
      shortcut: R
    • title: Step
      action: program.step
      shortcut: T
    • title: Pause
      action: program.pause
      shortcut: P
    • title: Resume
      action: program.resume
      shortcut: R
    • title: Abort
      action: program.abort
      shortcut: esc
    • title: Optional Stop
      action: program.optional_stop.toggle
    • title: Optional Skip
      action: program.optional_skip.toggle
    • separator
    • title: Homing
      provider: qtpyvcp.widgets.menus.homing_menu:HomingMenu
    • title: Cooling
      items:
      • title: Flood
        action: coolant.flood.toggle
        shortcut: F7
      • title: Mist
        action: coolant.mist.toggle
        shortcut: F8
    • title: Set Work Offsets
      action: win.showDialog
      args:
      • set_work_offsets
    • separator
    • title: Override Limits
      action: machine.override_limits
  • title: Settings
    items:
    • title: Show On-screen Keyboard
      action: settings.virtual-input.enable
  • title: View
    items:
    • title: Show Gridlines
      action: settings.backplot.show-grid
    • separator
    • title: Show Machine Bounds
      action: settings.backplot.show-machine-bounds
    • title: Show Machine Labels
      action: settings.backplot.show-machine-labels
    • title: Show Machine Ticks
      action: settings.backplot.show-machine-ticks
    • separator
    • title: Show Program Bounds
      action: settings.backplot.show-program-bounds
    • title: Show Program Labels
      action: settings.backplot.show-program-labels
    • title: Show Program Ticks
      action: settings.backplot.show-program-ticks
    • title: Use Colors per Tool
      action: settings.backplot.multitool-colors
    • separator
    • title: Perspective View
      action: settings.backplot.perspective-view
    • title: View Angle
      action: settings.backplot.view
  • title: Tools
    items:
    • title: HAL Meter
      action: tool.halmeter
    • title: HAL Scope
      action: tool.halscope
    • title: HAL Show
      action: tool.halshow
    • title: LCNC Status
      action: tool.status
    • title: Calibration
      action: tool.calibration
    • title: Classicladder PLC
      action: tool.classicladder
    • title: Simulated Probe
      action: tool.simulate_probe
  • title: About
    items:
    • title: About QtPyVCP
      action: win.showDialog
      args:
      • about_qtpyvcp
    • title: About Qt
      action: app.aboutQt
      vcp:
      name: Probe Basic
      version: v0.0.1
      author: Chris Polanski
      description: Probe Basic description ...
      windows:
      mainwindow:
      provider: probe_basic.probe_basic:ProbeBasic
      kwargs:
      menu: &id001
      • title: File
        items:
        • title: '&Open ...'
          action: win.openFile
          shortcut: ctrl+o
        • title: '&Recent Files'
          provider: qtpyvcp.widgets.recent_files_menu:RecentFilesMenu
        • title: '&Reload'
          action: program.reload
        • title: '&Close'
          action: program.clear
        • title: Save &As
          action: null
        • separator
        • title: Exit
          action: app.exit
          shortcut: ctrl+q
      • title: Machine
        items:
        • title: Toggle E-Stop
          action: machine.estop.toggle
          shortcut: F1
        • title: Toggle Power
          action: machine.power.toggle
          shortcut: F2
        • separator
        • title: Run Program
          action: program.run
          shortcut: R
        • title: Step
          action: program.step
          shortcut: T
        • title: Pause
          action: program.pause
          shortcut: P
        • title: Resume
          action: program.resume
          shortcut: R
        • title: Abort
          action: program.abort
          shortcut: esc
        • title: Optional Stop
          action: program.optional_stop.toggle
        • title: Optional Skip
          action: program.optional_skip.toggle
        • separator
        • title: Homing
          provider: qtpyvcp.widgets.menus.homing_menu:HomingMenu
        • title: Cooling
          items:
          • title: Flood
            action: coolant.flood.toggle
            shortcut: F7
          • title: Mist
            action: coolant.mist.toggle
            shortcut: F8
        • title: Set Work Offsets
          action: win.showDialog
          args:
          • set_work_offsets
        • separator
        • title: Override Limits
          action: machine.override_limits
      • title: Settings
        items:
        • title: Show On-screen Keyboard
          action: settings.virtual-input.enable
      • title: View
        items:
        • title: Show Gridlines
          action: settings.backplot.show-grid
        • separator
        • title: Show Machine Bounds
          action: settings.backplot.show-machine-bounds
        • title: Show Machine Labels
          action: settings.backplot.show-machine-labels
        • title: Show Machine Ticks
          action: settings.backplot.show-machine-ticks
        • separator
        • title: Show Program Bounds
          action: settings.backplot.show-program-bounds
        • title: Show Program Labels
          action: settings.backplot.show-program-labels
        • title: Show Program Ticks
          action: settings.backplot.show-program-ticks
        • separator
        • title: Perspective View
          action: settings.backplot.perspective-view
        • title: View Angle
          action: settings.backplot.view
      • title: Tools
        items:
        • title: HAL Meter
          action: tool.halmeter
        • title: HAL Scope
          action: tool.halscope
        • title: HAL Show
          action: tool.halshow
        • title: LCNC Status
          action: tool.status
        • title: Calibration
          action: tool.calibration
        • title: Classicladder PLC
          action: tool.classicladder
      • title: About
        items:
        • title: About Probe Basic
          action: win.showDialog
          args:
          • about_probebasic
        • title: About QtPyVCP
          action: win.showDialog
          args:
          • about_qtpyvcp
        • title: About Qt
          action: app.aboutQt
          fullscreen: true
          ui_file: /home/rudi/.local/lib/python2.7/site-packages/probe_basic/probe_basic.ui
          confirm_exit: false
          data_plugins:
          status:
          provider: qtpyvcp.plugins.status:Status
          kwargs:
          cycle_time: 15
          persistent_data_manager:
          provider: qtpyvcp.plugins.persistent_data_manager:PersistentDataManager
          kwargs:
          serialization_method: pickle
          settings:
          provider: qtpyvcp.plugins.settings:Settings
          position:
          provider: qtpyvcp.plugins.positions:Position
          kwargs:
          report_actual_pos: true
          use_program_units: true
          tooltable:
          provider: qtpyvcp.plugins.tool_table:ToolTable
          kwargs:
          columns: TXYZDR
          offsettable:
          provider: qtpyvcp.plugins.offset_table:OffsetTable
          notifications:
          provider: qtpyvcp.plugins.notifications:Notifications
          kwargs:
          enabled: true
          mode: native
          max_messages: 5
          persistent: true
          file_locations:
          provider: qtpyvcp.plugins.file_locations:FileLocations
          log_level: debug
          kwargs:
          default_location: NC Files
          local_locations:
          Home: ~/
          Desktop: ~/Desktop
          NC Files: ~/linuxcnc/nc_files
          network_locations: null
          exportedhal:
          provider: qtpyvcp.plugins.exported_hal:ExportedHal
          virtual_input:
          provider: qtpyvcp.plugins.virtual_input_manager:VirtualInputManager
          dialogs:
          open_file:
          provider: qtpyvcp.widgets.dialogs.open_file_dialog:OpenFileDialog
          set_work_offsets:
          provider: qtpyvcp.widgets.dialogs.offsets_dialog:OffsetsDialog
          tool_edit:
          provider: qtpyvcp.widgets.dialogs.tool_edit_dialog:ToolEditDialog
          probe_sim:
          provider: qtpyvcp.widgets.dialogs.probesim_dialog:ProbeSim
          about_qtpyvcp:
          provider: qtpyvcp.widgets.dialogs.about_dialog:AboutDialog
          about_probebasic:
          provider: qtpyvcp.widgets.dialogs.about_dialog:AboutDialog
          kwargs:
          ui_file: /home/rudi/.local/lib/python2.7/site-packages/probe_basic/about.ui
          virtual_input_providers:
          number:
          provider: qtpyvcp.widgets.virtual_input.virtual_input:VirtualInput
          kwargs:
          ui_file: /home/rudi/.local/lib/python2.7/site-packages/qtpyvcp/yaml_lib/../widgets/virtual_input/numpad.ui
          text:
          provider: qtpyvcp.widgets.virtual_input.virtual_input:VirtualInput
          kwargs:
          ui_file: /home/rudi/.local/lib/python2.7/site-packages/qtpyvcp/yaml_lib/../widgets/virtual_input/keyboard.ui
          application:
          provider: qtpyvcp.app.application:VCPApplication
          kwargs:
          stylesheet: /home/rudi/.local/lib/python2.7/site-packages/probe_basic/probe_basic.qss
          settings:
          touch-probe.diameter-offset:
          default_value: 0.123123
          persistent: true
          min_value: 0
          max_value: 1
          dro.display-units:
          default_value: 0
          options:
      • Auto
      • Inch
      • Metric
        dro.lathe-radius-mode:
        default_value: 0
        options:
      • Auto
      • Radius
      • Diameter
        dro.inch-format:
        default_value: '%9.4f'
        value_type: str
        dro.millimeter-format:
        default_value: '%9.3f'
        value_type: str
        dro.degree-format:
        default_value: '%9.2f'
        backplot.show-grid:
        default_value: false
        backplot.show-program-bounds:
        default_value: false
        backplot.show-program-labels:
        default_value: false
        backplot.show-program-ticks:
        default_value: false
        backplot.show-machine-bounds:
        default_value: false
        backplot.show-machine-labels:
        default_value: false
        backplot.show-machine-ticks:
        default_value: false
        backplot.perspective-view:
        default_value: false
        backplot.view:
        default_value: P
        options:
      • 'X: Front View'
      • 'XZ: Lathe View'
      • 'XZ2: Lathe View'
      • 'Y: Front View'
      • 'Z: Top View'
      • 'Z2: Bottom View'
      • 'P: Isometric'
        backplot.multitool-colors:
        default_value: true
        touch-probe.calibration-offset:
        description: Probe trigger point offset.
        default_value: 0.0
        persistent: true
        min_value: 0
        max_value: 1
        probe-parameters.probe-tool-number:
        description: probe tool number.
        default_value: 0.0
        persistent: true
        min_value: 0
        max_value: 9999
        probe-parameters.step-off-width:
        description: probe step off width.
        default_value: 0.0
        persistent: true
        min_value: 0
        max_value: 1000
        probe-parameters.probe-fast-fr:
        description: probe fast feedrate.
        default_value: 0.0
        persistent: true
        min_value: 0
        max_value: 1000
        probe-parameters.probe-slow-fr:
        description: probe slow feedrate.
        default_value: 0.0
        persistent: true
        min_value: 0
        max_value: 1000
        probe-parameters.max-xy-distance:
        description: max x and y probe travel distance.
        default_value: 0.0
        persistent: true
        min_value: 0
        max_value: 100
        probe-parameters.xy-clearance:
        description: x and y clearance distance.
        default_value: 0.0
        persistent: true
        min_value: 0
        max_value: 1000
        probe-parameters.max-z-distance:
        description: max z probe travel distance.
        default_value: 0.0
        persistent: true
        min_value: 0
        max_value: 100
        probe-parameters.z-clearance:
        description: z clearance distance.
        default_value: 0.0
        persistent: true
        min_value: 0
        max_value: 1000
        probe-parameters.extra-probe-depth:
        description: extra probe depth.
        default_value: 0.0
        persistent: true
        min_value: 0
        max_value: 100
        probe-parameters.edge-width:
        description: edge width probing distance.
        default_value: 0.0
        persistent: true
        min_value: 0
        max_value: 1000
        tool-change-position.x-tool-change-position:
        description: x axis tool change position.
        default_value: 0.0
        persistent: true
        min_value: -1000
        max_value: 1000
        tool-change-position.y-tool-change-position:
        description: y axis tool change position.
        default_value: 0.0
        persistent: true
        min_value: -1000
        max_value: 1000
        tool-change-position.z-tool-change-position:
        description: z axis tool change position.
        default_value: 0.0
        persistent: true
        min_value: -1000
        max_value: 1000
        tool-setter-probe.fast-probe-fr:
        description: tool probe fast feedrate.
        default_value: 0.0
        persistent: true
        min_value: -1000
        max_value: 1000
        tool-setter-probe.slow-probe-fr:
        description: tool probe slow feedrate.
        default_value: 0.0
        persistent: true
        min_value: -1000
        max_value: 1000
        tool-setter-probe.z-max-travel:
        description: maximumm z travel while probing before erroring out.
        default_value: 0.0
        persistent: true
        min_value: -1000
        max_value: 1000
        tool-setter-probe.xy-max-travel:
        description: maximumm xy travel while probing before erroring out.
        default_value: 0.0
        persistent: true
        min_value: -1000
        max_value: 1000
        tool-setter-probe.retract-distance:
        description: distance tool retracts after fast probe move.
        default_value: 0.0
        persistent: true
        min_value: -1000
        max_value: 1000
        tool-setter-probe.spindle-nose-height:
        description: distance from home to tool setter for the spindle nose.
        default_value: 0.0
        persistent: true
        min_value: -1000
        max_value: 1000
        programmable-coolant.active:
        description: activates programmable coolant with 1 as entry.
        default_value: 0.0
        persistent: true
        min_value: 0
        max_value: 1
        programmable-coolant.spindle-to-nozzle-dist:
        description: horizontal distance from spindle centerline to nozzle centerline.
        default_value: 0.0
        persistent: true
        min_value: -1000
        max_value: 1000
        programmable-coolant.gaugeline-to-nozzle-dist:
        description: vertical distance from spindle centerline to nozzle centerline.
        default_value: 0.0
        persistent: true
        min_value: -1000
        max_value: 1000
        programmable-coolant.pc-angle-offset:
        description: coolant nozzle offset amount to adjust for distance, pressure, gravity.
        default_value: 0.0
        persistent: true
        min_value: -45
        max_value: 45
        menubar: *id001
        qtdesigner:
        ui_file: /home/rudi/.local/lib/python2.7/site-packages/probe_basic/probe_basic.ui
        qss_file: /home/rudi/.local/lib/python2.7/site-packages/probe_basic/probe_basic.qss

2023-02-06 18:10:59,320 - qtpyvcp.utilities.info - INFO - The machine has 5 axes and 5 joints
2023-02-06 18:10:59,321 - qtpyvcp.utilities.info - INFO - The Axis/Joint mapping is:
2023-02-06 18:10:59,321 - qtpyvcp.utilities.info - INFO - Axis X --> Joint 0
2023-02-06 18:10:59,321 - qtpyvcp.utilities.info - INFO - Axis Y --> Joint 1
2023-02-06 18:10:59,321 - qtpyvcp.utilities.info - INFO - Axis Z --> Joint 2
2023-02-06 18:10:59,321 - qtpyvcp.utilities.info - INFO - Axis A --> Joint 3
2023-02-06 18:10:59,321 - qtpyvcp.utilities.info - INFO - Axis B --> Joint 4
2023-02-06 18:10:59,321 - qtpyvcp.app.launcher - DEBUG - Time: 0.000 (+0.000) - in script
2023-02-06 18:10:59,322 - qtpyvcp.app.launcher - DEBUG - Loading data plugings
2023-02-06 18:10:59,322 - qtpyvcp.plugins - DEBUG - Loading plugin 'status' from 'qtpyvcp.plugins.status:Status'
2023-02-06 18:10:59,359 - qtpyvcp.plugins.status - DEBUG - ---------set mdi_history: None, ['t64 m6', 'g92 x0 y0 z0', 'g53 g0 x200 y350 z50', 'g30 z150', 'g30 z2.5', 'g0 g30.1 x0 y0 z200.', 'g0 g30.1 x0 y0 z250.', 'g30.1 x0 y0 z250.', 'g30.1 z250', 't64 m6', 'g92 x0 y0 z0', 'g53 g0 x50 y50 z50', 'g54 g92 x50 y50 z50', 'g54 x50 y50 z50', 't64 m6', 't2 m6', 'g92 x0 y0 z0', 'g54', 'g53 g0 x35 y35 z35', 'g0 x0 y0 z0', 'g54', 'g28', 'g92 x0 y0 z0', 'g54', 'g54 g0', 'g0 x25 y30 z35', 'g53 g0', 'g53', 'g54 g92 x25 y30 z35', 'g92 x0 y0 z0', 'g54 g0 x40 y 40 z50', 'g92 x25 y30 z35', 'g54 g92 x25 y30 z35', 'g28', 'm6 p28', 'm60 p28', 'g0 p28', 'p28', 'm60', 'g28.1 x 50 y 750 z200', 'g49', 'g43', 'g0 x0 y0', 'g54 g0 z0', 'g53 g0', 'g53', 'g53 g0', 'g53 g0 x240', 'g1 x-200 f100', 'g1 x200 f100', 'g0 x240 y350 z-100', 'g53 g0', 'g0 x240 y350 z-100', 'g53 g0', 'g21', 'g53 g0', 'g53', 'g0 x240 y350 z-100', 'g53 g0 x240 y350 z-100', 'g92 x0 y0 z0', 'g0 x240 y350 z-100', 'g92 x0 y0 z0', 'g1 x200 f100', 'g1 x0 f100', 'g1 x-199 f100', 'g1 x-200 f100', 'g1 x200 f100', 'g1 x-200 f100', 'g1 x-300 f100', 'g1 x300 f100', 'm5', 's10000 m3', 'm5', 's10000 m4', 'm5', 's10000 m3', 'm5', 's10000 m3', 'm5', 's10000 m3', 'm5', 'm3 s1000', 'm5', 's24000 m3', 's5000 m3', 'g92 x0 y0 z0']
2023-02-06 18:10:59,365 - qtpyvcp.plugins - DEBUG - Loading plugin 'persistent_data_manager' from 'qtpyvcp.plugins.persistent_data_manager:PersistentDataManager'
2023-02-06 18:10:59,367 - qtpyvcp.plugins - DEBUG - Loading plugin 'settings' from 'qtpyvcp.plugins.settings:Settings'
2023-02-06 18:10:59,368 - qtpyvcp.plugins - DEBUG - Loading plugin 'position' from 'qtpyvcp.plugins.positions:Position'
2023-02-06 18:10:59,369 - qtpyvcp.plugins - DEBUG - Loading plugin 'tooltable' from 'qtpyvcp.plugins.tool_table:ToolTable'
2023-02-06 18:10:59,374 - qtpyvcp.plugins - DEBUG - Loading plugin 'offsettable' from 'qtpyvcp.plugins.offset_table:OffsetTable'
2023-02-06 18:10:59,375 - qtpyvcp.plugins - DEBUG - Loading plugin 'notifications' from 'qtpyvcp.plugins.notifications:Notifications'
2023-02-06 18:10:59,382 - qtpyvcp.plugins - DEBUG - Loading plugin 'file_locations' from 'qtpyvcp.plugins.file_locations:FileLocations'
2023-02-06 18:10:59,440 - qtpyvcp.plugins - DEBUG - Loading plugin 'virtual_input' from 'qtpyvcp.plugins.virtual_input_manager:VirtualInputManager'
2023-02-06 18:10:59,440 - qtpyvcp.app.launcher - DEBUG - Time: 0.119 (+0.119) - done loading data plugins
2023-02-06 18:10:59,441 - qtpyvcp.app.launcher - DEBUG - Initializing app
2023-02-06 18:10:59,520 - qtpyvcp.plugins - DEBUG - Initializing 'status' plugin
2023-02-06 18:10:59,520 - qtpyvcp.plugins.status - DEBUG - Starting periodic updates with 15ms cycle time
2023-02-06 18:10:59,521 - qtpyvcp.plugins - DEBUG - Initializing 'persistent_data_manager' plugin
2023-02-06 18:10:59,521 - qtpyvcp.plugins - DEBUG - Initializing 'settings' plugin
2023-02-06 18:10:59,521 - qtpyvcp.plugins - DEBUG - Initializing 'position' plugin
2023-02-06 18:10:59,521 - qtpyvcp.plugins - DEBUG - Initializing 'tooltable' plugin
2023-02-06 18:10:59,521 - qtpyvcp.plugins - DEBUG - Initializing 'offsettable' plugin
2023-02-06 18:10:59,521 - qtpyvcp.plugins - DEBUG - Initializing 'notifications' plugin
2023-02-06 18:10:59,522 - qtpyvcp.plugins - DEBUG - Initializing 'file_locations' plugin
2023-02-06 18:10:59,538 - qtpyvcp.plugins - DEBUG - Initializing 'virtual_input' plugin
2023-02-06 18:10:59,592 - qtpyvcp - INFO - Loading global stylesheet: /home/rudi/.local/lib/python2.7/site-packages/probe_basic/probe_basic.qss
2023-02-06 18:10:59,598 - qtpyvcp.app.launcher - DEBUG - Time: 0.277 (+0.158) - done initializing app
2023-02-06 18:10:59,598 - qtpyvcp.app.launcher - DEBUG - Loading dialogs
2023-02-06 18:10:59,861 - qtpyvcp.app.launcher - DEBUG - Time: 0.540 (+0.263) - done loading dialogs
2023-02-06 18:10:59,861 - qtpyvcp.app.launcher - DEBUG - Loading windows
2023-02-06 18:11:00,795 - qtpyvcp.widgets.display_widgets.vtk_backplot.vtk_backplot - DEBUG - ---------using refactored vtk code
2023-02-06 18:11:00,796 - qtpyvcp.widgets.display_widgets.vtk_backplot.linuxcnc_datasource - DEBUG - self._status.stat.g5x_offset: <type 'tuple'>
2023-02-06 18:11:00,796 - qtpyvcp.widgets.display_widgets.vtk_backplot.linuxcnc_datasource - DEBUG - -----current_wcs index: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
2023-02-06 18:11:00,796 - qtpyvcp.widgets.display_widgets.vtk_backplot.vtk_backplot - DEBUG - ---------active_wcs_index 0
2023-02-06 18:11:00,796 - qtpyvcp.widgets.display_widgets.vtk_backplot.vtk_backplot - DEBUG - ---------active_wcs_offset (0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
2023-02-06 18:11:00,797 - qtpyvcp.widgets.display_widgets.vtk_backplot.vtk_backplot - DEBUG - ---------wcs_offsets {0: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 1: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 2: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 3: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 4: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 5: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 6: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 7: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 8: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}
2023-02-06 18:11:00,808 - qtpyvcp.widgets.display_widgets.vtk_backplot.vtk_backplot - DEBUG - ---------translate1: (0.0, 0.0, 0.0)
2023-02-06 18:11:00,808 - qtpyvcp.widgets.display_widgets.vtk_backplot.vtk_backplot - DEBUG - ---------active_wcs_offset: (0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
2023-02-06 18:11:00,847 - qtpyvcp.widgets.display_widgets.vtk_backplot.vtk_backplot - DEBUG - show grid
2023-02-06 18:11:00,848 - qtpyvcp.widgets.display_widgets.vtk_backplot.vtk_backplot - DEBUG - Setting view to: P
2023-02-06 18:11:00,881 - qtpyvcp.widgets.display_widgets.vtk_backplot.vtk_backplot - DEBUG - ---------using refactored vtk code
2023-02-06 18:11:00,881 - qtpyvcp.widgets.display_widgets.vtk_backplot.linuxcnc_datasource - DEBUG - self._status.stat.g5x_offset: <type 'tuple'>
2023-02-06 18:11:00,881 - qtpyvcp.widgets.display_widgets.vtk_backplot.linuxcnc_datasource - DEBUG - -----current_wcs index: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
2023-02-06 18:11:00,882 - qtpyvcp.widgets.display_widgets.vtk_backplot.vtk_backplot - DEBUG - ---------active_wcs_index 0
2023-02-06 18:11:00,882 - qtpyvcp.widgets.display_widgets.vtk_backplot.vtk_backplot - DEBUG - ---------active_wcs_offset (0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
2023-02-06 18:11:00,882 - qtpyvcp.widgets.display_widgets.vtk_backplot.vtk_backplot - DEBUG - ---------wcs_offsets {0: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 1: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 2: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 3: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 4: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 5: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 6: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 7: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 8: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}
2023-02-06 18:11:00,893 - qtpyvcp.widgets.display_widgets.vtk_backplot.vtk_backplot - DEBUG - ---------translate1: (0.0, 0.0, 0.0)
2023-02-06 18:11:00,893 - qtpyvcp.widgets.display_widgets.vtk_backplot.vtk_backplot - DEBUG - ---------active_wcs_offset: (0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
2023-02-06 18:11:00,931 - qtpyvcp.widgets.display_widgets.vtk_backplot.vtk_backplot - DEBUG - show grid
2023-02-06 18:11:00,934 - qtpyvcp.widgets.display_widgets.vtk_backplot.vtk_backplot - DEBUG - Setting view to: P
2023-02-06 18:11:01,624 - qtpyvcp.widgets.display_widgets.vtk_backplot.vtk_backplot - DEBUG - ---------using refactored vtk code
2023-02-06 18:11:01,624 - qtpyvcp.widgets.display_widgets.vtk_backplot.linuxcnc_datasource - DEBUG - self._status.stat.g5x_offset: <type 'tuple'>
2023-02-06 18:11:01,625 - qtpyvcp.widgets.display_widgets.vtk_backplot.linuxcnc_datasource - DEBUG - -----current_wcs index: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
2023-02-06 18:11:01,625 - qtpyvcp.widgets.display_widgets.vtk_backplot.vtk_backplot - DEBUG - ---------active_wcs_index 0
2023-02-06 18:11:01,625 - qtpyvcp.widgets.display_widgets.vtk_backplot.vtk_backplot - DEBUG - ---------active_wcs_offset (0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
2023-02-06 18:11:01,625 - qtpyvcp.widgets.display_widgets.vtk_backplot.vtk_backplot - DEBUG - ---------wcs_offsets {0: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 1: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 2: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 3: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 4: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 5: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 6: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 7: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 8: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}
2023-02-06 18:11:01,637 - qtpyvcp.widgets.display_widgets.vtk_backplot.vtk_backplot - DEBUG - ---------translate1: (0.0, 0.0, 0.0)
2023-02-06 18:11:01,638 - qtpyvcp.widgets.display_widgets.vtk_backplot.vtk_backplot - DEBUG - ---------active_wcs_offset: (0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
2023-02-06 18:11:01,678 - qtpyvcp.widgets.display_widgets.vtk_backplot.vtk_backplot - DEBUG - show grid
2023-02-06 18:11:01,679 - qtpyvcp.widgets.display_widgets.vtk_backplot.vtk_backplot - DEBUG - Setting view to: P
2023-02-06 18:11:02,436 - qtpyvcp.app.launcher - CRITICAL - Unhandled exception in probe_basic line 8
Traceback (most recent call last):
File "/home/rudi/.local/bin/probe_basic", line 8, in
sys.exit(main())
File "/home/rudi/.local/lib/python2.7/site-packages/probe_basic/init.py", line 20, in main
qtpyvcp.run_vcp(opts, VCP_CONFIG_FILE)
File "/home/rudi/.local/lib/python2.7/site-packages/qtpyvcp/init.py", line 27, in run_vcp
run(*args, **kwargs)
File "/home/rudi/.local/lib/python2.7/site-packages/qtpyvcp/app/init.py", line 129, in run
launch_application(opts, config)
File "/home/rudi/.local/lib/python2.7/site-packages/qtpyvcp/app/launcher.py", line 78, in launch_application
loadWindows(config['windows'])
File "/home/rudi/.local/lib/python2.7/site-packages/qtpyvcp/app/launcher.py", line 228, in loadWindows
window = _initialize_object_from_dict(window_dict)
File "/home/rudi/.local/lib/python2.7/site-packages/qtpyvcp/app/launcher.py", line 208, in _initialize_object_from_dict
return obj(*args, **kwargs)
File "/home/rudi/.local/lib/python2.7/site-packages/probe_basic/probe_basic.py", line 24, in init
super(ProbeBasic, self).init(*args, **kwargs)
File "/home/rudi/.local/lib/python2.7/site-packages/qtpyvcp/widgets/form_widgets/main_window.py", line 57, in init
self.setMenuBar(self.buildMenuBar(menu))
File "/home/rudi/.local/lib/python2.7/site-packages/qtpyvcp/widgets/form_widgets/main_window.py", line 246, in buildMenuBar
recursiveAddItems(menu_bar, menus)
File "/home/rudi/.local/lib/python2.7/site-packages/qtpyvcp/widgets/form_widgets/main_window.py", line 231, in recursiveAddItems
recursiveAddItems(new_menu, items)
File "/home/rudi/.local/lib/python2.7/site-packages/qtpyvcp/widgets/form_widgets/main_window.py", line 235, in recursiveAddItems
new_menu = _initialize_object_from_dict(item, parent=menu)
File "/home/rudi/.local/lib/python2.7/site-packages/qtpyvcp/app/launcher.py", line 208, in _initialize_object_from_dict
return obj(*args, **kwargs)
File "/home/rudi/.local/lib/python2.7/site-packages/qtpyvcp/widgets/recent_files_menu.py", line 56, in init
self.update(files or self.status.recent_files())
File "/home/rudi/.local/lib/python2.7/site-packages/qtpyvcp/widgets/recent_files_menu.py", line 61, in update
fname = fname.encode('utf-8')
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 31: ordinal not in range(128)
2023-02-06 18:11:02,758 - qtpyvcp.actions.program_actions - DEBUG - Loading NC program: /home/rudi/linuxcnc/nc_files/pb_examples/blank.ngc
2023-02-06 18:11:02,822 - qtpyvcp.plugins.offset_table - DEBUG - Params file changed: /home/rudi/linuxcnc/configs/config/probe_basic/sim.var
2023-02-06 18:11:02,824 - qtpyvcp.widgets.display_widgets.vtk_backplot.vtk_backplot - DEBUG - -------load_program
2023-02-06 18:11:02,824 - qtpyvcp.app.launcher - CRITICAL - Unhandled exception in vtk_backplot.py line 409
Traceback (most recent call last):
File "/home/rudi/.local/lib/python2.7/site-packages/qtpyvcp/widgets/display_widgets/vtk_backplot/vtk_backplot.py", line 409, in load_program
for wcs_index, actor in self.path_actors.items():
File "/home/rudi/.local/lib/python2.7/site-packages/vtk/qt/QVTKRenderWindowInteractor.py", line 309, in getattr
" has no attribute named " + attr)
AttributeError: VTKBackPlot has no attribute named path_actors
2023-02-06 18:11:02,873 - qtpyvcp.widgets.display_widgets.vtk_backplot.vtk_backplot - DEBUG - on_offset_table_changed
2023-02-06 18:11:02,873 - qtpyvcp.widgets.display_widgets.vtk_backplot.vtk_backplot - DEBUG - on_offset_table_changed
2023-02-06 18:11:02,873 - qtpyvcp.widgets.display_widgets.vtk_backplot.vtk_backplot - DEBUG - on_offset_table_changed
2023-02-06 18:11:57,278 - qtpyvcp.widgets.display_widgets.vtk_backplot.vtk_backplot - DEBUG - -------load_program
2023-02-06 18:11:57,279 - qtpyvcp.app.launcher - CRITICAL - Unhandled exception in vtk_backplot.py line 409
Traceback (most recent call last):
File "/home/rudi/.local/lib/python2.7/site-packages/qtpyvcp/widgets/display_widgets/vtk_backplot/vtk_backplot.py", line 409, in load_program
for wcs_index, actor in self.path_actors.items():
File "/home/rudi/.local/lib/python2.7/site-packages/vtk/qt/QVTKRenderWindowInteractor.py", line 309, in getattr
" has no attribute named " + attr)
AttributeError: VTKBackPlot has no attribute named path_actors
2023-02-06 18:11:57,305 - qtpyvcp.widgets.display_widgets.vtk_backplot.vtk_backplot - DEBUG - -------load_program
2023-02-06 18:11:57,305 - qtpyvcp.app.launcher - CRITICAL - Unhandled exception in vtk_backplot.py line 409
Traceback (most recent call last):
File "/home/rudi/.local/lib/python2.7/site-packages/qtpyvcp/widgets/display_widgets/vtk_backplot/vtk_backplot.py", line 409, in load_program
for wcs_index, actor in self.path_actors.items():
File "/home/rudi/.local/lib/python2.7/site-packages/vtk/qt/QVTKRenderWindowInteractor.py", line 309, in getattr
" has no attribute named " + attr)
AttributeError: VTKBackPlot has no attribute named path_actors

  • /home/rudi/linuxcnc/configs/config/probe_basic/custom_config.yml

example of a machine specific settings

windows:
mainwindow:
kwargs:
confirm_exit: false

settings:

VTK backplot view settings

backplot.show-grid:
default_value: false

backplot.show-program-bounds:
default_value: false

backplot.show-program-labels:
default_value: false

backplot.show-program-ticks:
default_value: false

backplot.show-machine-bounds:
default_value: false

backplot.show-machine-labels:
default_value: false

backplot.show-machine-ticks:
default_value: false

backplot.perspective-view:
default_value: false

backplot.view:
default_value: P
options: ["X: Front View", "XZ: Lathe View", "XZ2: Lathe View", "Y: Front View", "Z: Top View", "Z2: Bottom View", "P: Isometric"]

backplot.multitool-colors:
default_value: True

IOError: [Errno 13] Keine Berechtigung: u'/home/dieter/linuxcnc/nc_files/examples/Untitled.ngc'

(Please fill in this issue template with as much information as you can about the
circumstances under which the issue occurred, and the steps needed to reproduce it.)

Steps to reproduce the problem

(provide as detailed a step by step as you can)

This is what I expected to happen

(explain what you thought should have happened)

This is what happened instead

(explain what happened instead)

It worked properly before this

(did it work before? what changed?)

Traceback

Traceback (most recent call last):
  File "/home/dieter/.local/lib/python2.7/site-packages/qtpyvcp_conversational_gcode/widgets/base_widget.py", line 155, in on_post_to_file
    f.write_to_file(program_path)
  File "/home/dieter/.local/lib/python2.7/site-packages/qtpyvcp_conversational_gcode/ops/gcode_file.py", line 41, in write_to_file
    f = open(filename, 'w')
IOError: [Errno 13] Keine Berechtigung: u'/home/dieter/linuxcnc/nc_files/examples/Untitled.ngc'

Options

{
    "command_line_args": null, 
    "config_file": null, 
    "confirm_exit": false, 
    "develop": false, 
    "fullscreen": true, 
    "help": false, 
    "hide_cursor": false, 
    "hide_menu_bar": false, 
    "hide_status_bar": false, 
    "info": false, 
    "ini": "/home/dieter/linuxcnc/configs/Probe_Basic_Dieter/Probe_Basic_Dieter.ini", 
    "log_file": "/home/dieter/linuxcnc/configs/Probe_Basic_Dieter/sim.log", 
    "log_level": "WARN", 
    "maximize": true, 
    "perfmon": false, 
    "position": "0x0", 
    "qt_api": null, 
    "size": null, 
    "stylesheet": null, 
    "theme": null, 
    "version": false
}

System Info

 * Description:	Debian GNU/Linux 10 (buster)
 * Kernel: 4.19.0-13-rt-amd64
 * Qt version: v5.11.3
 * Qt bindings: PyQt5 v5.11.3
 * LinuxCNC version: v2.8.1-13-ga22256354
 * QtPyVCP version: v0.3.11+12.g0923dcdf

Attachments

Please also find and attach the following files, along with any others that may be helpful:

  • /home/dieter/linuxcnc/configs/Probe_Basic_Dieter/sim.log
  • None

atc does not appear

I have this problem I do not think the problem does anyone have any idea how to solve this?
below the dependencies that I have installed.
a picture of how the screen appears atc

qtpyvcp

[sudo] senha para renato:
Lendo listas de pacotes... Pronto
Construindo Ć”rvore de dependĆŖncias
Lendo informaĆ§Ć£o de estado... Pronto
git is already the newest version (1:2.11.0-3+deb9u4).
gstreamer1.0-plugins-bad is already the newest version (1.10.4-1).
pyqt5-dev-tools is already the newest version (5.7+dfsg-5).
python-dbus.mainloop.pyqt5 is already the newest version (5.7+dfsg-5).
python-pyqt5 is already the newest version (5.7+dfsg-5).
python-pyqt5.qtmultimedia is already the newest version (5.7+dfsg-5).
python-pyqt5.qtopengl is already the newest version (5.7+dfsg-5).
python-dev is already the newest version (2.7.13-2).
python-pip is already the newest version (9.0.1-2+deb9u1).
python-setuptools is already the newest version (33.1.1-1).
python-pyqt5.qsci is already the newest version (2.9.3+dfsg-4).
libqt5multimedia5-plugins is already the newest version (5.7.1~20161021-2).
Os seguintes pacotes foram instalados automaticamente e jĆ” nĆ£o sĆ£o necessĆ”rios:
icedtea-netx icedtea-netx-common libevent-2.0-5 linux-headers-4.9.0-8-amd64
linux-headers-4.9.0-8-common
Utilize 'sudo apt autoremove' para os remover.
0 pacotes atualizados, 0 pacotes novos instalados, 0 a serem removidos e 1 nĆ£o atualizados.

Traceback (most recent call last): File "/home/dieter/.local/lib/python2.7/site-packages/qtpyvcp/widgets/input_widgets/tool_table.py", line 252, in saveToolTable self.tool_model.saveToolTable() File "/home/dieter/.local/lib/python2.7/site-packages/qtpyvcp/widgets/input_widgets/tool_table.py", line 200, in saveToolTable self.tt.saveToolTable(self._tool_table, self._columns) File "/home/dieter/.local/lib/python2.7/site-packages/qtpyvcp/plugins/tool_table.py", line 423, in saveToolTable fh.write('\n'.join(lines)) TypeError: write() argument 1 must be unicode, not str

  1. Ich kann in Probebasic keine Werkzeugtabelle(Tolls) speichern, wenn ich auf speichern gehe, kommt immer folgende Fehlermeldung

Ich habe heute Probebasic neu, nach folgender vorgehensweise Installiert:
https://kcjengr.github.io/probe_basic/quick_start.html

Traceback

Traceback (most recent call last):
  File "/home/dieter/.local/lib/python2.7/site-packages/qtpyvcp/widgets/input_widgets/tool_table.py", line 252, in saveToolTable
    self.tool_model.saveToolTable()
  File "/home/dieter/.local/lib/python2.7/site-packages/qtpyvcp/widgets/input_widgets/tool_table.py", line 200, in saveToolTable
    self.tt.saveToolTable(self._tool_table, self._columns)
  File "/home/dieter/.local/lib/python2.7/site-packages/qtpyvcp/plugins/tool_table.py", line 423, in saveToolTable
    fh.write('\n'.join(lines))
TypeError: write() argument 1 must be unicode, not str

Options

{
    "command_line_args": null, 
    "config_file": null, 
    "confirm_exit": null, 
    "develop": false, 
    "fullscreen": null, 
    "help": false, 
    "hide_cursor": false, 
    "hide_menu_bar": false, 
    "hide_status_bar": false, 
    "info": false, 
    "ini": "/home/dieter/linuxcnc/configs/Axis_Grundeinst_Original_ProbeB/CNC_Probe_Basic.ini", 
    "log_file": "/home/dieter/qtpyvcp.log", 
    "log_level": null, 
    "maximize": null, 
    "perfmon": false, 
    "position": null, 
    "qt_api": null, 
    "size": null, 
    "stylesheet": null, 
    "theme": null, 
    "version": false
}

System Info

 * Description:	Debian GNU/Linux 10 (buster)
 * Kernel: 4.19.0-19-rt-amd64
 * Qt version: v5.11.3
 * Qt bindings: PyQt5 v5.11.3
 * LinuxCNC version: v2.8.2-11-g6a3d0a434
 * QtPyVCP version: v0.3.19+15.g3ad0cc9c

Attachments

Please also find and attach the following files, along with any others that may be helpful:

CRITICAL: ImportError: No module named notify

Today I just wonted to download and install the last version of qtpyvcp (development installation) with new tooltable slot, but after that the commands like:

editvcp gnevkovcp

or

editvcp probe_basic

fail with following error:

cnc@cnc:~$ editvcp gnevkovcp
Loading YAML config file: /home/cnc/gnevkovcp/gnevkovcp/config.yml
touch-probe.diameter-offset OrderedDict([('default_value', 0.0), ('persistent', True), ('min_value', 0), ('max_value', 1)])
Loading UI file: /home/cnc/gnevkovcp/gnevkovcp/ui/mainwindow.ui
Loading QSS file: /home/cnc/gnevkovcp/gnevkovcp/ui/style.qss

Starting QtDesigner ...

Resetting rcs_errors_printed because a new NML channel is being created.
[qtpyvcp-designer.vcp_launcher][CRITICAL] Unhandled exception in qtdesigner_plugin.py line 36 (vcp_launcher.py:38)
Traceback (most recent call last):
File "/home/cnc/qtpyvcp/qtpyvcp/widgets/qtdesigner_plugin.py", line 36, in
from qtpyvcp.widgets.form_widgets.designer_plugins import *
File "/home/cnc/qtpyvcp/qtpyvcp/widgets/form_widgets/designer_plugins.py", line 28, in
from qtpyvcp.widgets.form_widgets.probe_widget.probe import SubCaller
File "/home/cnc/qtpyvcp/qtpyvcp/widgets/form_widgets/probe_widget/probe.py", line 19, in
from qtpyvcp.lib.notify import Notification, Urgency, init
ImportError: No module named notify
updating units 0
[qtpyvcp-designer.vcp_launcher][CRITICAL] Unhandled exception in qtdesigner_plugin.py line 36 (vcp_launcher.py:38)
Traceback (most recent call last):
File "/home/cnc/qtpyvcp/qtpyvcp/widgets/qtdesigner_plugin.py", line 36, in
from qtpyvcp.widgets.form_widgets.designer_plugins import *
File "/home/cnc/qtpyvcp/qtpyvcp/widgets/form_widgets/designer_plugins.py", line 28, in
from qtpyvcp.widgets.form_widgets.probe_widget.probe import SubCaller
File "/home/cnc/qtpyvcp/qtpyvcp/widgets/form_widgets/probe_widget/probe.py", line 19, in
from qtpyvcp.lib.notify import Notification, Urgency, init
ImportError: No module named notify

At the moment It's not possible to continue with GUI development - all qtpyvcp widgets are not available in the editor.

AttributeError: 'NoneType' object has no attribute 'setNotify'

(Please fill in this issue template with as much information as you can about the
circumstances under which the issue occurred, and the steps needed to reproduce it.)

Steps to reproduce the problem

(provide as detailed a step by step as you can)

This is what I expected to happen

(explain what you thought should have happened)

This is what happened instead

(explain what happened instead)

It worked properly before this

(did it work before? what changed?)

Traceback

Traceback (most recent call last):
  File "/home/charon/.local/lib/python2.7/site-packages/qtpyvcp/plugins/notifications.py", line 126, in timerEvent
    self.captureMessage('error', msg)
  File "/home/charon/.local/lib/python2.7/site-packages/qtpyvcp/plugins/notifications.py", line 82, in captureMessage
    self.notification_dispatcher.setNotify(m_type, msg)
AttributeError: 'NoneType' object has no attribute 'setNotify'

Options

{
    "chooser": false, 
    "command_line_args": null, 
    "config_file": "/home/charon/linuxcnc/configs/sim.qtpyvcp/custom_config.yml", 
    "confirm_exit": false, 
    "develop": false, 
    "fullscreen": null, 
    "help": false, 
    "hide_cursor": false, 
    "hide_menu_bar": false, 
    "hide_status_bar": false, 
    "info": false, 
    "ini": "/home/charon/linuxcnc/configs/sim.qtpyvcp/xyz-metric.ini", 
    "log_file": "/home/charon/linuxcnc/configs/sim.qtpyvcp/sim.log", 
    "log_level": "WARN", 
    "maximize": null, 
    "perfmon": false, 
    "position": null, 
    "qt_api": null, 
    "size": null, 
    "stylesheet": null, 
    "theme": null, 
    "vcp": "brender", 
    "version": false
}

System Info

 * Description:	Debian GNU/Linux 10 (buster)
 * Kernel: 4.19.0-11-rt-amd64
 * Qt version: v5.11.3
 * Qt bindings: PyQt5 v5.11.3
 * LinuxCNC version: v2.8.1
 * QtPyVCP version: v0.3.11

Attachments

Please also find and attach the following files, along with any others that may be helpful:

  • /home/charon/linuxcnc/configs/sim.qtpyvcp/sim.log
  • /home/charon/linuxcnc/configs/sim.qtpyvcp/custom_config.yml

Acknowledgements to PyDM

Really nice Project here!

It would be great if you guys could add a nice Acknowledgements section at your project docs and/or README to PyDM (https://github.com/slaclab/pydm) given that a bunch of features such as Rules, the Extensions/TaskMenuExtension and a couple of other fundamental pieces were heavily based/copied from there!

The PyDM team would appreciate the recognition for all the effort put in coming up with the code, documentation and overall project structure.

@mattgibbs

ModuleNotFoundError: No module named 'vtkmodules'

I'm trying to run probe_pasic_lathe on a freshly installed Debian 10, LinuxCNC 2.10 system.
Debian 10 comes with Python 3.7 which appears to be supported by qtpyvcp. However, the latest deb for vtk is python3-vtk7, and pip could install vtk8. No straight forward way to install python3-vtk9 as written in the qtpyvcp documentation. When running probe_pasic_lathe, I get the following error:

  File "/home/flo/Documents/files/repositories/qtpyvcp/qtpyvcp/widgets/display_widgets/vtk_backplot/tool_actor.py", line 9, in <module>
    from vtkmodules.vtkCommonColor import vtkNamedColors
ModuleNotFoundError: No module named 'vtkmodules'

Is this because of the "wrong" vtk version? If that is the case, the documentation should be updated because there is no vtk9 for Python 3.7 as far as I can tell.

Not run after installation

I have installed qtpyvcp on Debian 9 as it's describe in docs "Quick Start". Installation go without errors. When I run LCNC after this I get error:
image

IOError: [Errno 13] Keine Berechtigung: u'/home/dieter/linuxcnc/nc_files/examples/ Untitled.ngc'

(Please fill in this issue template with as much information as you can about the
circumstances under which the issue occurred, and the steps needed to reproduce it.)

Steps to reproduce the problem

(provide as detailed a step by step as you can)

This is what I expected to happen

(explain what you thought should have happened)

This is what happened instead

(explain what happened instead)

It worked properly before this

(did it work before? what changed?)

Traceback

Traceback (most recent call last):
  File "/home/dieter/.local/lib/python2.7/site-packages/qtpyvcp_conversational_gcode/widgets/base_widget.py", line 155, in on_post_to_file
    f.write_to_file(program_path)
  File "/home/dieter/.local/lib/python2.7/site-packages/qtpyvcp_conversational_gcode/ops/gcode_file.py", line 41, in write_to_file
    f = open(filename, 'w')
IOError: [Errno 13] Keine Berechtigung: u'/home/dieter/linuxcnc/nc_files/examples/ Untitled.ngc'

Options

{
    "command_line_args": null, 
    "config_file": "/home/dieter/linuxcnc/configs/Probe_Basic_Dieter/custom_config.yml", 
    "confirm_exit": false, 
    "develop": false, 
    "fullscreen": true, 
    "help": false, 
    "hide_cursor": false, 
    "hide_menu_bar": false, 
    "hide_status_bar": false, 
    "info": false, 
    "ini": "/home/dieter/linuxcnc/configs/Probe_Basic_Dieter/Probe_Basic_Dieter.ini", 
    "log_file": "/home/dieter/linuxcnc/configs/Probe_Basic_Dieter/sim.log", 
    "log_level": "WARN", 
    "maximize": true, 
    "perfmon": false, 
    "position": "0x0", 
    "qt_api": null, 
    "size": null, 
    "stylesheet": null, 
    "theme": null, 
    "version": false
}

System Info

 * Description:	Debian GNU/Linux 10 (buster)
 * Kernel: 4.19.0-13-rt-amd64
 * Qt version: v5.11.3
 * Qt bindings: PyQt5 v5.11.3
 * LinuxCNC version: v2.8.1-31-g7d17c16ed
 * QtPyVCP version: v0.3.11+13.g894f2f65.dirty

Attachments

Please also find and attach the following files, along with any others that may be helpful:

  • /home/dieter/linuxcnc/configs/Probe_Basic_Dieter/sim.log
  • /home/dieter/linuxcnc/configs/Probe_Basic_Dieter/custom_config.yml

DOC / BUG / Dependency

rob@RobsCNC:~/qtpyvcp/docs$ make html
sphinx-build -b html -d build/doctrees source build/html
Running Sphinx v4.1.2
[qtpyvcp][INFO] Logging to /home/rob/qtpyvcp.log (logger.py:97)

Extension error:
Could not import extension notfound.extension (exception: No module named 'notfound')
make: *** [Makefile:53: html] Error 2

Note: Docs in Probe Basic (doc_src) built fine before attempting to run make html in qtpyvcp/docs


Fixed following running + builds fine:

pip install sphinx-notfound-page

error installing qtpyvcp

    UPDATING build/lib.linux-x86_64-2.7/qtpyvcp/_version.py
    set build/lib.linux-x86_64-2.7/qtpyvcp/_version.py to 'v0.3.7'
    running install_lib
    copying build/lib.linux-x86_64-2.7/qtpyvcp/_version.py -> /usr/local/lib/python2.7/dist-packages/qtpyvcp
    byte-compiling /usr/local/lib/python2.7/dist-packages/qtpyvcp/_version.py to _version.pyc
    running install_data
    error: can't copy 'pyqt5designer/Qt5.7.1-64bit/libpyqt5_py2.so': doesn't exist or not a regular file
    
    ----------------------------------------
Command "/usr/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-dTcwyV/qtpyvcp/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-5E3SkL-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-dTcwyV/qtpyvcp/

TypeError: write() argument 1 must be unicode, not str

  1. Ich kann in Probebasic keine Werkzeugtabelle(Tolls) speichern, wenn ich auf speichern gehe, kommt immer folgende Fehlermeldung

Ich habe heute Probebasic neu, nach folgender vorgehensweise Installiert:
https://kcjengr.github.io/probe_basic/quick_start.html

Traceback

Traceback (most recent call last):
  File "/home/dieter/.local/lib/python2.7/site-packages/qtpyvcp/widgets/input_widgets/tool_table.py", line 252, in saveToolTable
    self.tool_model.saveToolTable()
  File "/home/dieter/.local/lib/python2.7/site-packages/qtpyvcp/widgets/input_widgets/tool_table.py", line 200, in saveToolTable
    self.tt.saveToolTable(self._tool_table, self._columns)
  File "/home/dieter/.local/lib/python2.7/site-packages/qtpyvcp/plugins/tool_table.py", line 423, in saveToolTable
    fh.write('\n'.join(lines))
TypeError: write() argument 1 must be unicode, not str

Options

{
    "command_line_args": null, 
    "config_file": null, 
    "confirm_exit": null, 
    "develop": false, 
    "fullscreen": null, 
    "help": false, 
    "hide_cursor": false, 
    "hide_menu_bar": false, 
    "hide_status_bar": false, 
    "info": false, 
    "ini": "/home/dieter/linuxcnc/configs/Axis_Grundeinst_Original_ProbeB/CNC_Probe_Basic.ini", 
    "log_file": "/home/dieter/qtpyvcp.log", 
    "log_level": null, 
    "maximize": null, 
    "perfmon": false, 
    "position": null, 
    "qt_api": null, 
    "size": null, 
    "stylesheet": null, 
    "theme": null, 
    "version": false
}

System Info

 * Description:	Debian GNU/Linux 10 (buster)
 * Kernel: 4.19.0-19-rt-amd64
 * Qt version: v5.11.3
 * Qt bindings: PyQt5 v5.11.3
 * LinuxCNC version: v2.8.2-11-g6a3d0a434
 * QtPyVCP version: v0.3.19+15.g3ad0cc9c

Attachments

Please also find and attach the following files, along with any others that may be helpful:

Abstracting Controller - GrblHAL

Following up on this ticket I filed: kcjengr/probe_basic#63

Ok reading the codebase I think the best bet is to totally abstract the controller. I see linuxcnc pretty much everywhere so Iā€™m thinking it would make sense to totally abstract that as controller or something like that. This would even make it useable for something like Klipper down the road (no desire or intention to do that though lol)

Iā€™m going to take a first pass this weekend and share a PR.

DBusException: org.freedesktop.DBus.Error.ServiceUnknown: The name :1.144 was not provided by any .service files

I am not sure what this is all about i get same error when i use the basic vcp tutorial as well.
any help or insight would be much appreciated

thanks linden

Steps to reproduce the problem:

Down load plaz_beta from git hub https://github.com/linden1910/plaz_beta.git
pip install plaz_beta -e . inside plaz_beta folder
copy plaz_beta folder from configs folder to linuxcnc configs folder
Start linuxcnc with plaz_beta.ini linuxcnc '~/linuxcnc/configs/plaz_beta_sim/plaz_beta.ini'
Machine should start with manual tool changer message
Load gusset.ngc using file tab
select back plot tab
Jog machine and set part zero
press cycle start
error appearers at first G1 move

Traceback

Traceback (most recent call last):
  File "/home/plaz/Git/Dev-QtpyVcp/qtpyvcp/qtpyvcp/plugins/notifications.py", line 134, in onTimeout
    self.error_message.setValue(msg)
  File "/home/plaz/Git/Dev-QtpyVcp/qtpyvcp/qtpyvcp/plugins/plugin.py", line 115, in setValue
    self.fset(self.instance, self, value)
  File "/home/plaz/Git/Dev-QtpyVcp/qtpyvcp/qtpyvcp/plugins/plugin.py", line 126, in inner
    fset(*args, **kwargs)
  File "/home/plaz/Git/Dev-QtpyVcp/qtpyvcp/qtpyvcp/plugins/notifications.py", line 83, in error_message
    self.captureMessage('error', msg)
  File "/home/plaz/Git/Dev-QtpyVcp/qtpyvcp/qtpyvcp/plugins/notifications.py", line 88, in captureMessage
    self.showDesktopNotification(typ, msg)
  File "/home/plaz/Git/Dev-QtpyVcp/qtpyvcp/qtpyvcp/plugins/notifications.py", line 104, in showDesktopNotification
    self.desktop_notifier.show(title=typ.capitalize(), body=msg, icon=icon)
  File "/home/plaz/Git/Dev-QtpyVcp/qtpyvcp/qtpyvcp/lib/notify.py", line 145, in show
    self.timeout,
  File "/usr/lib/python2.7/dist-packages/dbus/proxies.py", line 145, in __call__
    **keywords)
  File "/usr/lib/python2.7/dist-packages/dbus/connection.py", line 651, in call_blocking
    message, timeout)
DBusException: org.freedesktop.DBus.Error.ServiceUnknown: The name :1.144 was not provided by any .service files

Options

{
    "chooser": false, 
    "command_line_args": null, 
    "config_file": null, 
    "confirm_exit": false, 
    "fullscreen": null, 
    "help": false, 
    "hide_menu_bar": false, 
    "hide_status_bar": false, 
    "ini": "/home/plaz/linuxcnc/configs/plaz_beta_sim/plaz_beta.ini", 
    "log_file": "/home/plaz/qtpyvcp.log", 
    "log_level": null, 
    "maximize": null, 
    "perfmon": false, 
    "position": null, 
    "pref_file": null, 
    "qt_api": null, 
    "size": null, 
    "stylesheet": null, 
    "theme": null, 
    "vcp": "plaz_beta", 
    "version": false
}

System Info

 * Description:	Linux Mint 19.1 Tessa
 * Kernel: 4.9.0-8-rt-amd64
 * Qt version: v5.9.5
 * Qt bindings: PyQt5 v5.10.1
 * LinuxCNC version: v2.8.0~pre1
 * QtPyVCP version: v0.2.2+27.gc18f30e

Attachments

Please also find and attach the following files

qtpyvcp.log
gusset_2_inch_ngc.txt

DRO widgets line edit resets on tiny changes of actual position on machines with feedback

The new DRO widgets that allow mathmatical expressions to be filled in for DRO widgets are hard to use on machines that use feedback encoders, since these generally move about a tiny bit. A movement of 0.001mm, which in my case is only about a single encoder pulse, already causes the labels to reset whatever you typed in them.

In the attached video the issue is shown with probe_basic. I have already increased the update time in the YML file from 15ms to 150ms, yet this still makes it very hard to properly use the DRO widget as intended.

Video.mov

Don't build docs on every push

Currently the docs are built whether or not they need to be, and in the case of tagged commits are built twice. It would be best to check if any of the doc source files have changed, and only build in that case.

Should be easy to check for changes in the docs using:
git diff --name-only docs

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    šŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. šŸ“ŠšŸ“ˆšŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ā¤ļø Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.