Qtscreen uses QtVCP widgets for LinuxCNC integration.

Widget is the general name for the UI objects such as buttons and labels in PyQt.

Es stehen Ihnen alle Standard-Widgets im Qt Designer Editor zur Verfügung.

There are also special widgets made for LinuxCNC that make integration easier. These are split in two, heading on the right side of the editor:

  • Einer ist für nur HAL-Widgets.

  • Das andere ist für CNC-Steuerungs-Widgets.

You are free to mix them in any way on your panel.

Anmerkung
Diese Beschreibung der Widget-Eigenschaften kann aufgrund der weiteren Entwicklung und des Mangels an Personen, die Dokumentationen schreiben, leicht veraltet sein (eine gute Möglichkeit, dem Projekt etwas zurückzugeben). Die endgültigen Beschreibungen finden Sie im Quellcode.

1. Nur HAL-Widgets

Diese Widgets haben normalerweise HAL-Pins und reagieren nicht auf die Maschinensteuerung.

1.1. XEmbed - Widget zum Einbetten von Programmen

Ermöglicht die Einbettung eines Programms in das Widget.

Es funktionieren nur Programme, die das xembed-Protokoll verwenden, wie z.B.:

  • GladeVCP Virtuelle Control Panels

  • Integrierte virtuelle Tastatur

  • QtVCP virtual control panels

  • mplayer-Videoplayer

1.2. Slider - HAL-Pin-Wert-Anpassungs-Widget

Allows one to adjust a HAL pin value using a sliding pointer.

1.3. LED - Indicator Widget

QtVCP LED: LED Indicator Widget
Abbildung 1. QtVCP LED: LED-Anzeige-Widget

A LED like indicator that optionally follows a HAL pin’s logic.

halpin_option

Wählt aus, ob die LED einem Eingangs-HAL-Pin oder einem Programmzustand folgt.

diameter

Diameter of the LED

color

Color of the LED when on.

off_color

Color of the LED when off.

alignment

Qt-Hinweis zur Ausrichtung.

state

Current state of LED

flashing

Schaltet die Blinkoption ein und aus.

flashRate

Sets the flash rate.

The LED properties can be defined in a stylesheet with the following code added to the .qss file, name_of_led being the widget name defined in Qt Designer’s editor:

LED #name_0f_led{
  qproperty-color: red;
  qproperty-diameter: 20;
  qproperty-flashRate: 150;
}

1.4. CheckBox Widget

This widget allows the user to check a box to set a HAL pin true or false.

Er basiert auf dem QCheckButton von PyQt.

1.5. RadioButton Widget

This widget allows a user to set HAL pins true or false. Only one RadioButton widget of a group can be true at a time.

It is based on PyQt’s QRadioButton.

1.6. Gauge - Rundes Messuhr-Widget

QtVCP `Gauge`: Round Dial Gauge Widget
Abbildung 2. QtVCP Gauge: Round Dial Gauge Widget

Round Gauge kann in einem LinuxCNC GUI verwendet werden, um einen Eingabeparameter auf dem Zifferblatt anzuzeigen.

Customizable Parameters

Es gibt mehrere Eigenschaften, die vom Benutzer eingestellt werden können, um das Erscheinungsbild der Anzeige anzupassen.

Die folgenden Parameter können entweder programmatisch oder über den Eigenschaftseditor von Qt Designer eingestellt werden.

halpin_option

Wenn Sie diese Option auf True setzen, werden 2 HAL-Pins erstellt:

  • One is for setting the value input

  • The other is for setting the setpoint.

If this option is not set, then value and setpoint must be connected programmatically, i.e., in the handler file.

max_reading

This value determines the highest number displayed on the gauge face.

max_value

Dies ist der maximal zu erwartende Wert des Werteingangssignals.
Mit anderen Worten, es ist der Skalenendwert.

num_ticks

Dies ist die Anzahl der Ticks/Anzeigewerte auf der Anzeigefläche.
Sie sollte auf eine Zahl eingestellt werden, die sicherstellt, dass die Textanzeigen auf der Anzeigefläche lesbar sind.
Der minimal zulässige Wert ist 2.

zone1_color

Zone1 erstreckt sich vom maximalen Messwert bis zum Schwellenwert.
Sie kann auf eine beliebige RGB-Farbe eingestellt werden.

zone2_color

Zone2 erstreckt sich vom Schwellenwert bis zum Mindestwert, der 0 ist.
Sie kann auf eine beliebige RGB-Farbe eingestellt werden.

bezel_color

This is the color of the outer ring of the gauge.

threshold

Der Schwellenwert ist der Übergangspunkt zwischen den Zonen.
Er sollte auf einen Wert zwischen 0 und dem Maximalwert gesetzt werden.
Der höchstzulässige Wert wird auf den "Maximalwert" des Messgeräts gesetzt, der Mindestwert ist 0.

gauge_label

Dies ist der Text unter der Wertanzeige, nahe dem unteren Rand des Messgeräts.
Die Funktion des Messgeräts ist dann leicht erkennbar.

Non Customizable Parameters

There are 2 inputs that are not customizable. They can be set via HAL pins, programmatically or via signals from other widgets:

value

Dies ist der eigentliche Eingangswert, der mit der Nadel des Messgeräts und in der digitalen Anzeige angezeigt wird.
Er muss auf einen Wert zwischen 0 und dem Maximalwert eingestellt werden.

setpoint

This is a value that determines the location of a small marker on the gauge face. It must be set to a value between 0 and the maximum value.

1.7. HalBar - HAL Bar Level Indicator

QtVCP HalBar: Panel demonstrating the HAL Bar Level Indicator
Abbildung 3. QtVCP HalBar: Panel demonstrating the HAL Bar Level Indicator

This widget is used to indicate level or value, usually of a HAL s32/float pin.
you can also disable the HAL pin and use Qt signals or python commands to change the level.

1.7.1. Bar Properties:

HalBar is a subclass of the Bar widget, so it inherits these properties

  • stepColorList: a list of color strings, the number of colors defines the number of bars.

  • backgroundColor: a QColor definition of the background color.

  • setMaximum: an integer that defines the maximum level of indication.

  • setMinimum: an integer that defines the lowest level of indication.

1.7.2. halBar Properties:

  • pinType: to select HAL pins type:

    • NONE no HAL pin will be added

    • S32 A S32 integer pin will be added

    • FLOAT A Float pin will be added

  • pinName: to change the HAL pin name otherwise the widget base name is used.

1.7.3. HalBar style sheets

The above Bar properties could be set in styles sheets.
pinType and pinName properties can not be changed in stylesheets.

Anmerkung
In style sheets, stepColorList is a single string of color names separated by commas.
HalBar{
    qproperty-backgroundColor: #000;
    qproperty-stepColorList: 'green,green,#00b600,#00b600,#00d600,#00d600,yellow,yellow,red,red';
}

1.8. HALPad - HAL Buttons Joypad

QtVCP HALPad: HAL Buttons Joypad
Abbildung 4. QtVCP HALPad: HAL Buttons Joypad

Dieses Widget sieht aus und funktioniert wie ein 5-Tasten-D-Pad, mit einem LED-Ring.

Jede Taste hat einen wählbaren Typ (Bit, S32 oder Float) als HAL-Pin.

The LED center ring has selectable colors for off and on and is controlled by a bit HAL pin.

HALPad ENUMS

Es werden numerierte Konstanten verwendet:

  • Um Indikatorpositionen zu referenzieren:

    • NONE

    • LEFT

    • RIGHT

    • CENTER

    • TOP

    • BOTTOM

    • LEFTRIGHT

    • TOPBOTTOM

  • Für HAL-Pins Typ:

    • NONE

    • BIT

    • S32

    • FLOAT

Sie verwenden den Namen des Widgets im Qt Designer plus die Referenzkonstante:

self.w.halpadname.set_highlight(self.w.halpadname.LEFTRIGHT)
HALPad Properties
pin_name

Optional name to use for the HAL pins basename. If left blank, the Qt Designer widget name will be used.

pin_type

Select the HAL output pin type. This property is only used at startup. Selection can be set in Qt Designer:

  • NONE

  • BIT

  • S32

  • FLOAT

left_image_path
right_image_path
center_image_path
top_image_path
bottom_image_path

File or resource path to an image to display in the described button location.
If the reset button is pressed in the Qt Designer editor property, the image will not be displayed (allowing optional text).

left_text
right_text
center_text
top_text
bottom_text

A text string to be displayed in the described button location.
If left blank an image can be designated to be displayed.

true_color
false_color

Farbauswahl für den mittleren LED-Ring, der angezeigt werden soll, wenn der BASENAME.light.center HAL-Pin True oder False ist.

text_color

Auswahl der Farbe für den Text des Buttons.

text_font

Auswahl der Schriftart für den Text des Buttons.

HALPad Styles

The above properties could be set in styles sheets.

HALPad{
    qproperty-on_color: #000;
    qproperty-off_color: #444;
}

1.9. PushButton - HAL Pin Toggle Widget

Mit diesem Widget kann der Benutzer einen HAL-Pin per Tastendruck auf "true" oder "false" setzen.

As an option it can be a toggle button.

For a LED Indicator Option, see [sub:qtvcp:widgets:indicatedpushbutton][IndicatedPushButton] below for more info.

Es gibt auch andere Optionen.

It is based on PyQt’s QPushButton.

1.10. focusOverlay - Focus Overlay Widget

Dieses Widget legt ein farbiges Overlay über den Bildschirm, normalerweise während ein Dialog angezeigt wird.

QtVCP Fokus-Überlagerung
Abbildung 5. Beispiel für ein Fokus-Overlay zur Bestätigung der Abschlussaufforderung

Wird verwendet, um ein "konzentriertes" Gefühl zu erzeugen und die Aufmerksamkeit auf wichtige Informationen zu lenken.

Es kann auch ein durchsichtiges Bild anzeigen.
Es kann auch Nachrichtentext und Schaltflächen anzeigen.

Dieses Widget kann mit ‚STATUS‘-Meldungen gesteuert werden.

1.11. gridLayout - Grid Layout Widget

This widget controls if the widgets inside it are enabled or disabled.

Disabled widgets typically have a different color and do not respond to actions.

It is based on PyQt’s QGridLayout.

1.12. hal_label - HAL Label Widget

This widget displays values sent to it.

Werte können gesendet werden von:

  • HAL-Pins
    Der Eingangsstift kann als Bit, S32, Float oder kein Stift ausgewählt werden

  • Programmatically

  • A QtSignal

Es gibt eine "textTemplate"-Eigenschaft, um den Rich-Text einzustellen und/oder den Text zu formatieren.
Eine grundlegende Formatierung könnte sein:

  • %r für Boolesche Werte

  • %d for integers

  • %0.4f für Floats.

A rich text example might be:

self.w.my_hal_label.setProperty(textTemplate,"""
<html>
<head/>
<body>
  <p><span style="font-size:12pt;font-weight:600;color:#f40c11;">%0.4f</span></p>
</body>
</html>
"""
)

The setDisplay slot can be connected to an integer, a float or a bool signal.

If the property pin_name is not set the widget name will be used.

Es gibt Funktionsaufrufe zur Anzeige von Werten:

[HALLabelName].setDisplay(some_value)

Can be used to set the display if no HAL pin is selected.

[HALLabelName].setProperty(textTemplate,"%d")

Sets the template of the display.

Es basiert auf PyQts QLabel.

1.13. LCDNumber - Widget zum Auslesen der LCD-Stilnummer

Dieses Widget zeigt HAL-Float/S32/Bit-Werte in einer LCD-ähnlichen Form an.

Es kann Zahlen im Dezimal-, Hexadezimal-, Binär- und Oktalformat anzeigen, indem es die Eigenschaft Modus setzt.

When using floats you can set a formatting string.

You must set the digitCount property to an appropriate setting to display the largest number.

Eigenschaften
pin_name

Optionsstring, der als HAL-Pin-Name verwendet werden soll.
Bei einem leeren String wird der Name des Widgets verwendet.

bit_pin_type

Selects the input pin as type BIT.

s32_pin_type

Selects the input pin as type S32.

float_pin_type

Select the input pin as type FLOAT.

floatTemplate

A string that will be used as a Python3 format template to tailor the LCD display.
Only used when a FLOAT pin is selected, e.g., {:.2f} will display a float rounded to 2 numbers after the decimal.
A blank setting will allow the decimal to move as required.

Es basiert auf PyQts QLCDNumber.

1.14. DoubleScale - Spin Button Entry Widget

This widget is a spin button entry widget used for setting a s32 and float HAL pin.

It has an internal scale factor, set to a default of 1, that can be set programmatically or using a QtSignal.

The setInput slot can be connected to an integer, or a float signal.

[HALLabelName].setInput(some_value)

This is a function call to change the internal scaling factor.

The HAL pins will be set to the value of the internal scale times the widget displayed value.

1.15. GeneralHALInput - General Signals/Slots Input Connection Widget

This widget is used to connect an arbitrary Qt widget to HAL using signals/slots.

It is used for widgets that should respond to HAL pin changes.

1.16. GeneralHALOutput - General Signals/Slots Output Connection Widget

This widget is used to connect an arbitrary Qt widget to HAL using signals/slots.

It is used for widgets that should control HAL pins.

1.17. WidgetSwitcher - Multi-widget Layout View Switcher Widget

This is used to switch the view of a multi-widget layout to show just one widget, i.e. to flip between a large view of a widget and a smaller multi widget view.

It is different from a stacked widget as it can pull a widget from anywhere in the screen and place it in its page with a different layout than it originally had.

The original widget must be in a layout for switcher to put it back.

In Qt Designer you will:

  • Add the WidgetSwitcher widget on screen.

  • Right click the WidgetSwitcher and add a page.

  • Populate it with the widgets/layouts you wish to see in a default form.

  • Add as many pages as there are views to switch to.

  • On each page, add a layout widget.
    After adding the layout you must right click the widget switcher again and set the layout option.

  • Click on the WidgetSwitcher widget and then scroll to the bottom of the property editor.

  • Look for the dynamic property widget_list and double click to the right of it.

  • A dialog pops up allowing you to add the names of the widgets to move to the pages you added to the WidgetSwitcher.

There are function calls to display specific widgets.
By calling one of these functions, you control what widget is currently displayed:

[_WidgetSwitcherName_].show_id_widget(_number_)
[_WidgetSwitcherName_].show_named_widget(_widget_name_)
[_WidgetSwitcherName_].show_default()

Dies zeigt das "Seite 0"-Layout und stellt alle anderen Widgets wieder so ein, wie sie ursprünglich in Qt Designer erstellt wurden.

[_WidgetSwitcherName_].show_next()

Nächstes Widget anzeigen.

Es basiert auf dem QStack-Widget.

2. Widgets für Maschinensteuerungen

Diese Widgets interagieren mit dem Zustand der Maschinensteuerung.

2.1. ActionButton - Aktionssteuerungs-Widget der Maschinensteuerung

Diese Tasten werden für Steuerungsaktionen an der Maschinensteuerung verwendet.

Sie sind auf IndicatedPushButton aufgebaut und können daher mit LEDs überlagert werden.

Anmerkung
If you left double click on this widget you can launch a dialog to set any of these actions. The dialogs will help to set the right related data to the selected action. You can also change these properties directly in the property editor.
Aktionen

You can select one of these:

Estop
Machine On
Auto
mdi
manual
run
run_from_line status

Gets line number from STATUS message gcode-line-selected.

run_from_line slot

Gets line number from Qt Designer int/str slot setRunFromLine.

abort
pause
load dialog

Requires a dialog widget present.

Camview dialog

Requires camview dialog widget present.

origin offset dialog

Requires origin offset dialog widget present.

macro dialog

Requires macro dialog widget present.

Launch Halmeter
Launch Status
Launch Halshow
Home

Set the joint number to -1 for all-home.

Unhome

Set the joint number to -1 for all-unhome.

Home Selected

Homes the joint/axis selected by STATUS.

Unhome Selected

Unhomes the joint/axis selected by STATUS.

zero axis
zero G5X

Nullt die aktuellen Offsets des Benutzerkoordinatensystems.

zero G92

Nullt die optionalen G92-Offsets.

zero Z rotational

Zeros the rotation offset.

jog joint positive

Legt die Gelenknummer fest.

jog joint negative

Legt die Gelenknummer fest.

jog selected positive

Ausgewählt mit einem anderen Widget oder STATUS.

jog selected negative

Ausgewählt mit einem anderen Widget oder STATUS.

jog increment

Set metric/imperial/angular numbers.

jog rate

Festlegen Sie die float/alt-Gleitkommanummer.

feed override

Festlegen Sie die float/alt-Gleitkommanummer.

rapid override

Festlegen Sie die float/alt-Gleitkommanummer.

spindle override

Festlegen Sie die float/alt-Gleitkommanummer.

spindle fwd
spindle backward
spindle stop
spindle up
spindle down
view change

Set view_type_string.

limits override
flood
mist
block delete
optional stop
mdi command

Set command_string, i.e.,calls a hard coded MDI command

INI mdi number

Set ini_mdi_number, i.e., calls an INI based MDI command

dro absolute
dro relative
dro dtg
exit screen

Closes down LinuxCNC

Override limits

Temporarily override hard limits

launch dialogs

Pops up dialogs if they are included in ui file.

set DRO to relative
set DRO to absolute
set DRO to distance-to-go

Attributes

Diese setzen Attribute der ausgewählten Aktion (Verfügbarkeit hängt vom Widget ab):

toggle float option

Allows jog rate and overrides to toggle between two rates.

joint number

Wählt das Gelenk/die Achse aus, das/die von der Schaltfläche gesteuert wird.

incr imperial number

Legt das imperiale Jog-Inkrement fest (negativ setzen, um zu ignorieren).

incr mm number

Legt die metrische Schrittweite fest (zum Ignorieren negativ setzen).

incr angular number

Legt die Winkelschrittweite fest (zum Ignorieren negativ einstellen).

float number

Wird für jograte und overrides verwendet.

float alternate number

Für jograte und overrides, die zwischen zwei Fließkommazahlen wechseln können.

view type string

Can be:

  • p,

  • x, y, y2, z, z2,

  • zoom-in, zoom-out,

  • pan-up, pan-down, pan-left, pan-right,

  • rotate-up, rotate-down, rotate-cw, rotate-ccw

  • clear.

command string

MDI command string that will be invoked if the MDI command action is selected.

ini_mdi_number

Ein Verweis auf den Abschnitt [MDI_COMMAND_LIST] der _INI-Datei.
Setzen Sie einen Integer, der eine Zeile unter der INI-Zeile [MDI_COMMAND] auswählt, beginnend bei 0.
Fügen Sie dann in der INI-Datei unter der Überschrift [MDI_COMMAND_LIST] entsprechende Zeilen hinzu.
Die Befehle werden durch das ; getrennt.
Das Label wird nach dem Komma gesetzt, und das Symbol \n fügt einen Zeilenumbruch hinzu.

[MDI_COMMAND_LIST]
MDI_COMMAND = G0 Z25;X0 Y0;Z0, Goto\nUser\nZero
MDI_COMMAND = G53 G0 Z0;G53 G0 X0 Y0, Goto\nMachn\nZero

Action buttons are subclassed from [sub:qtvcp:widgets:indicatedpushbutton][IndicatedPushButton]. See the following sections for more information about:

2.2. ActionToolButton - Optional Actions Menu Button Widget

ActionToolButton buttons are similar in concept to action buttons, but they use QToolButtons to allow for optional actions to be selected by pushing and holding the button till the option menu pops up.

Currently there is only one option: userView.

Es basiert auf PyQts QToolButton.

userView Record and Set User View Widget

User View tool button allows to record and return to an arbitrary graphics view.

Press and hold the button to have the menu pop up and press record view to record the currently displayed graphics view.

Click the button normally to return to the last recorded position.

Die aufgezeichnete Position wird beim Herunterfahren gespeichert, wenn eine Einstellungsdateioption eingerichtet ist.

Anmerkung
Due to programming limitations, the recorded position may not show exactly the same. Particularly, if you pan zoomed out and pan zoomed in again while setting the desired view.
Best practice is to select a main view, modify as desired, record, then immediately click the button to switch to the recorded position. If it is not as you like, modify its existing position and re-record.

2.3. RoundButton - Round Shapped ActionButton Widget

Round buttons work the same as ActionButtons other than the button is cropped round.

They are intended only to be visually different.

They have two path properties for displaying images on true and false.

2.4. AxisToolButton - Select and Set Axis Widget

This allows one to select and set an axis.

If the button is set checkable, it will indicate which axis is selected.

If you press and hold the button a pop up menu will show allowing one to:

  • Nullen der Achse

  • Divide the axis by 2

  • Set the axis arbitrarily

  • Reset the axis to the last number recorded

You must have selected an entry dialog that corresponds to the dialog_code_string, usually this is selected from the screenOptions widget.

You can select the property halpin_option, it will then set a HAL pin true when the axis is selected. The property joint_number should be set to the appropriate joint number. The property axis_letter should be set to the appropriate axis letter.

The property dialog_code_string can be changed to ENTRY or CALCULATOR to call a typing only entry dialog or a touch/typing calculator type entry dialog.

Es basiert auf PyQts QToolButton.

2.5. CamView - Workpiece Alignment and Origin Setting Widget

This widget displays a image from a web camera.

It overlays an adjustable circular and cross hair target over the image.

CamView was built with precise visual positioning in mind.

Diese Funktion dient der Ausrichtung des Werkstücks oder der Nullteilmerkmale mithilfe einer Webcam.

It uses OpenCV vision library.

2.6. DROLabel - Axis Position Display Widget

This will display the current position of an axis.

Qjoint_number

Gelenknummer des anzuzeigenden Offsets (10 gibt den Rotationsoffset an).

Qreference_type

Tatsächlich, relativ oder noch zu fahrende Entfernung (0,1,2).

metric_template

Format of display, e.g. %10.3f.

imperial_template

format of display, e.g. %9.4f.

angular_template

Format of display, e.g. %Rotational: 10.1f.

Das DROLabel-Widget enthält eine Eigenschaft isHomed, die mit einem Stylesheet verwendet werden kann, um die _Farbe des DRO_Label basierend auf dem Homing-Status der Gelenknummer in LinuxCNC zu ändern.

Here is a sample stylesheet entry that:

  • Sets the font of all DRO_Label widgets,

  • Sets the text template (to set resolution) of the DRO,

  • Then sets the text color based on the Qt isHomed property.

DROLabel {
    font: 25pt "Lato Heavy";
    qproperty-imperial_template: '%9.4f';
    qproperty-metric_template: '%10.3f';
    qproperty-angular_template: '%11.2f';
}

DROLabel[isHomed=false] {
    color: red;
}

DROLabel[isHomed=true] {
    color: green;
}

Here is how you specify a particular widget by its objectName in Qt Designer:

DROLabel #dr0_x_axis [isHomed=false] {
    color: yellow;
}

Es basiert auf PyQts QLabel.

2.7. GcodeDisplay - G-code Text Display Widget

This displays G-code in text form, highlighting the currently running line.

Dies kann auch Folgendes anzeigen:

  • MDI history when LinuxCNC is in MDI mode.

  • Log entries when LinuxCNC is in MANUAL mode.

  • Preference file entries if you enter PREFERENCE in capitals into the MDILine widget.

It has a signal percentDone(int) that can be connected to a slot (such as a progressBar to display percent run).

auto_show_mdi_status

Setzen Sie true, damit das Widget im MDI-Modus in den MDI-Verlauf wechselt.

auto_show_manual_status

Setzen Sie true, damit das Widget im manuellen Modus auf das Maschinenprotokoll umschaltet.

The GcodeDisplay properties can be set in a stylesheet with the following code added to the .qss file (the following color choices are random).

EditorBase{
    qproperty-styleColorBackground: lightblue;
    qproperty-styleColor0: black;
    qproperty-styleColor1: #000000; /* black */
    qproperty-styleColor2: blue;
    qproperty-styleColor3: red;
    qproperty-styleColor4: green;
    qproperty-styleColor5: darkgreen;
    qproperty-styleColor6: darkred;
    qproperty-styleColor7: deeppink;
    qproperty-styleColorMarginText: White;
    qproperty-styleColorMarginBackground: blue;
    qproperty-styleFont0: "Times,12,-1,0,90,0,0,0,0,0";
    qproperty-styleFont1: "Times,18,-1,0,90,1,0,0,0,0";
    qproperty-styleFont2: "Times,12,-1,0,90,0,0,0,0,0";
    qproperty-styleFont3: "Times,12,-1,0,90,0,0,0,0,0";
    qproperty-styleFont4: "Times,12,-1,0,90,0,0,0,0,0";
    qproperty-styleFont5: "Times,12,-1,0,90,0,0,0,0,0";
    qproperty-styleFont6: "Times,12,-1,0,90,0,0,0,0,0";
    qproperty-styleFont7: "Times,12,-1,0,90,0,0,0,0,0";
    qproperty-styleFontMargin: "Times,14,-1,0,90,0,0,0,0,0";
}

Für den Standard-G-Code-Lexer des Widgets GcodeDisplay:

  • styleColor0 = Default: Everything not part of the groups below

  • styleColor1 = LineNo and Comments: Nxxx and comments (characters inside of and including () or anything after ; (when used outside of parenthesis) with the exception of the note below)

  • styleColor2 = G-code: G and the digits after

  • styleColor3 = M-code: M and the digits after

  • styleColor4 = Axis: XYZABCUVW

  • styleColor5 = Other: EFHIJKDQLRPST (feed, rpm, radius, etc.)

  • styleColor6 = AxisValue: Values following XYZABCUVW

  • styleColor7 = OtherValue: Values following EFHIJKDQLRPST$

Anmerkung
For comments, the "OtherValue" color (Color 5) can be used to highlight "print," "debug," "msg," "logopen," "logappend," "logclose" "log," "pyrun," "pyreload" "abort," "probeopen" "probeclose" inside of a parenthesis comment in a line of G-code. As well as "py," if a line that starts with ";py,". Examples: (print, text), (log, text), (msg, text), or (debug, text). Only the last of the examples will be highlighted if there are more than one on the same line.

Schriftdefinitionen:

"style name, size, -1, 0, bold setting (0-99), italics (0-1),
underline (0-1),0,0,0"

Es basiert auf PyQts QsciScintilla.

2.8. GcodeEditor - G-code Program Editor Widget

This is an extension of the GcodeDisplay widget that adds editing convenience.

It is based on PyQt’s QWidget which incorporates GcodeDisplay widget.

2.9. GCodeGraphics - G-code Graphic Backplot Widget

QtVCP GcodeGraphics: G-code Graphic Backplot Widget
Abbildung 6. QtVCP GcodeGraphics: G-code Graphic Backplot Widget

This displays the current G-code in a graphical form.

Stylesheets Properties
dro-font/dro-large-font (string)

Sets the small and large DRO font properties
Here we reference with the widget base name; GCodeGraphics

GCodeGraphics{
    qproperty-dro_font:"monospace  bold 12";
}
GCodeGraphics{
    qproperty-dro_large_font:"Times 25";
}
_view (string)

Sets the default view orientation on GUI load.
Valid choices for a lathe are p, y, y2. For other screens, valid choices are p, x, y, z, z2.
The following shows an example of how to set this property (referenced using the widget user selected name):

#gcodegraphics{
    qproperty-_view: z;
}
_dro (bool)

Legt fest, ob die DRO angezeigt werden soll oder nicht.
Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

#gcodegraphics{
    qproperty-_dro: False;
}
_dtg (bool)

Legen Sie fest, ob die Reststrecke angezeigt werden soll.
Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

#gcodegraphics{
    qproperty-_dtg: False;
}
_metric (bool)

Legt fest, ob die_ Einheiten standardmäßig_ in metrischen Einheiten angezeigt werden sollen oder nicht.
Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

#gcodegraphics{
    qproperty-_metric: False;
}
_overlay (bool)

Legt fest, ob das Overlay standardmäßig angezeigt werden soll oder nicht.
Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

#gcodegraphics{
    qproperty-_overlay: False;
}
_offsets (bool)

Legt fest, ob die Offsets standardmäßig angezeigt werden sollen oder nicht.
Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

#gcodegraphics{
    qproperty-_offsets: False;
}
_small_origin (bool)

Legt fest, ob standardmäßig der kleine Ursprung angezeigt wird.
Das folgende Beispiel zeigt, wie diese Eigenschaft festgelegt wird:

#gcodegraphics{
    qproperty-_small_origin: False;
}
overlay_color (Primär-, Sekundär- oder RGBA-formatierte Farbe)

Legt die Standard-Overlayfarbe fest.
Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

#gcodegraphics{
    qproperty-overlay_color: blue;
}
`background_color ` Hintergrundfarbe, (Primär-, Sekundär- oder RGBA-formatierte Farbe)

Legt die Standard-Hintergrundfarbe fest.
Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

#gcodegraphics{
    qproperty-background_color: blue;
}
+_use_gradient_background+ (bool)

Legt fest, ob Standardmäßig ein Hintergrund mit Farbverlauf verwendet wird.
Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

#gcodegraphics{
    qproperty-_use_gradient_background: False;
}
jog_color (primary, secondary, or RGBA formatted color)

Legt die Standard-Jog-Farbe fest.
Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

#gcodegraphics{
    qproperty-jog_color: red;
}
Feed_color (primary, secondary, or RGBA formatted color)

Legt die Standard-Farbe für den Vorschub fest.
Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

#gcodegraphics{
    qproperty-Feed_color: green;
}
Rapid_color (primary, secondary, or RGBA formatted color)

Legt die Standard-Farbe für den Eilgang fest.
Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

#gcodegraphics{
    qproperty-Rapid_color: rgba(0, 0, 255, .5);
}
InhibitControls (bool)

Legt fest, ob externe Steuerelemente standardmäßig gesperrt werden sollen oder nicht.
Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

#gcodegraphics{
    qproperty-InhibitControls:True;
}
MouseButtonMode (int)

Ändert das Verhalten der Maustaste zum Drehen, Verschieben oder Zoomen innerhalb der Vorschau.
Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

#gcodegraphics{
    qproperty-MouseButtonMode: 1;
}

There are 12 valid modes:

Mode

Move

Zoom

Rotate (engl. drehen)

0

Left

Middle

Right

1

Middle

Right

Left

2

Middle

Left

Right

3

Left

Right

Middle

4

Right

Left

Middle

5

Right

Middle

Left

Modes 6-11 are intended for machines that only require a 2D preview such as plasma or some lathes and have no rotate button assigned.

Mode

Move

Zoom

6

Left

Middle

7

Middle

Left

8

Right

Left

9

Left

Right

10

Middle

Right

11

Right

Middle

MouseWheelInvertZoom (bool)

Determines whether or not to invert the zoom direction when zooming with the mouse wheel.
The following shows an example of how to set this property:

#gcodegraphics{
    qproperty-MouseWheelInvertZoom:True;
}
ACTION functions

The ACTION library can control the G-code graphics widget.

ACTION.RELOAD_DISPLAY()

Reload the current program which recalculates the origin/offsets.

ACTION.SET_GRAPHICS_VIEW(_view_)

The following view commands can be sent:

  • clear

  • zoom-in

  • zoom-out

  • pan-up

  • pan-down

  • pan-right

  • pan-left

  • rotate-cw

  • rotate-ccw

  • rotate-up

  • rotate-down

  • overlay-dro-on

  • overlay-dro-off

  • overlay-offsets-on

  • overlay-offsets-off

  • alpha-mode-on

  • alpha-mode-off

  • inhibit-selection-on

  • inhibit-selection-off

  • dimensions-on

  • dimensions-off

  • grid-size

  • record-view

  • set-recorded-view

  • P

  • X

  • Y

  • Y2

  • Z

  • Z2

  • set-large-dro

  • set-small-dro

ACTION.ADJUST_PAN(_X,Y_)

Legen Sie direkt den relativen Blickwinkel in x- und y-Richtung fest.

ACTION.ADJUST_ROTATE(_X,Y_)

Legen Sie direkt die relative Drehung der Ansicht in x- und y-Richtung fest.

It is based on PyQt’s OpenGL widget.

2.10. StateLabel - Controller-Modi Statusbeschriftungsanzeige-Widget

Dadurch wird eine Beschriftung basierend auf den Zuständen der Maschinensteuerung true/false angezeigt.

Sie können zwischen verschiedenen Texten wählen, die auf wahr oder falsch basieren.

Eigenschaften der Zustandsauswahl

Die Zustände sind über diese Eigenschaften wählbar:

css_mode_status

True, wenn sich die Maschine in G96 befindet Constant Surface Speed Mode.

diameter_mode_status

True, wenn sich die Maschine in G7 befindet Drehmaschine Durchmesser Modus.

fpr_mode_status

True, wenn die Maschine im G95 Vorschub je Umdrehung Modus (engl. Feed per Revolution Mode) ist.

metric_mode_status

True, wenn sich die Maschine im G21 Metrischen Modus befindet.

Text templates properties
true_textTemplate

Dies ist der Text, der gesetzt wird, wenn die Option True ist.
Sie können Qt rich text code für verschiedene Schriftarten/Farben usw. verwenden.
Eine typische Vorlage für den metrischen Modus im wahren Zustand könnte sein: Metrischer Modus

false_textTemplate

Dies ist der Text, der gesetzt wird, wenn die Option False ist.
Sie können Qt rich text code für verschiedene Schriftarten/Farben usw. verwenden.
Eine typische Vorlage für den metrischen Modus im falschen Zustand könnte sein: Imperialer Modus.

Es basiert auf PyQts QLabel.

2.11. StatusLabel - Anzeige-Widget für Controller-Variablen-Zustandsbeschriftung

This will display a label based on selectable status of the machine controller.
You can change how the status will be displayed by substituting python formatting code in the text template. You can also use rich text for different fonts/colors etc.

Selectable States

These states are selectable:

actual_spindle_speed_status

Dient zur Anzeige der tatsächlichen Spindeldrehzahl, wie sie vom HAL-Pin "spindle.0.speed-i" gemeldet wird.
Sie wird in RPM umgewandelt.
Normalerweise wird ein "textTemplate" von "%d" verwendet.

actual_surface_speed_status

Used to display the actual cutting surface speed on a lathe based on X axis and spindle speed.
It’s converted to distance per minute.
A textTemplate of %4.1f (feet per minute) and altTextTemplate of %d (meters per minute) would typically be used.

blendcode_status

Shows the current G64 setting.

current_feedrate_status

Shows the current actual feedrate.

current_FPU_status

Shows the current actual feed per unit.

fcode_status

Shows the current programmed F code setting.

feed_override_status

Shows the current feed override setting in percent.

filename_status

Zeigt den Namen der zuletzt geladenen Datei an.

filepath_status

Shows the last loaded full file path name.

gcode_status

Shows all active G-codes.

gcode_selected_status

Zeigt die aktuell ausgewählte G-Code-Zeile an.

halpin_status

Shows the HAL pin output of a selected HAL pin.

jograte_status

Shows the current QtVCP based Jog Rate.

jograte_angular_status

Shows the current QtVCP based Angular Jog Rate.

jogincr_status

Shows the current QtVCP based Jog increment.

jogincr_angular_status

Shows the current QtVCP based Angular Jog increment.

machine_state_status

Shows the current machine interpreter state using the text described from the machine_state_list.
The interpreter states are:

  • Estopped

  • Running

  • Stopped

  • Paused

  • Waiting

  • Reading

max_velocity_override_status

Shows the current max axis velocity override setting.

mcode_status

Shows all active M-codes.

motion_type_status

Shows current type of machine motion using the text described from the motion_type_list.

  • None

  • Rapid

  • Feed

  • Arc

  • Tool Change

  • Probe

  • Rotary Index

requested_spindle_speed_status

Shows the requested spindle speed - actual may be different.

rapid_override_status

Shows the current rapid override setting in (0-100) percent.

spindle_override_status

Zeigt die aktuelle Spindel-Override-Einstellung in Prozent an.

timestamp_status

Shows the time based on the system settings.
An example of a useful textTemplate setting: %I:%M:%S %p.
See the Python time module for more info.

tool comment_status

Gibt den Kommentartext des aktuell geladenen Werkzeugs zurück.

tool diameter_status

Gibt den Durchmesser des aktuell geladenen Werkzeugs zurück.

tool_number_status

Gibt die Werkzeugnummer des aktuell geladenen Werkzeugs zurück.

tool_offset_status

Returns the offset of the current loaded tool, indexed by index_number to select axis (0=x,1=y,etc.).

user_system_status

Shows the active user coordinate system (G5x setting).

Other Properties
index_number

Integer that specifies the tool status index to display.

state_label_list

List of labels used to describe different machine states.

motion_label_list

List of labels used to describe different motion types.

halpin_names

Name of a halpin to monitor (must be the complete name, including the HAL component basename).

textTemplate

This is usually used for imperial (G20) or angular numerical settings, though not every option has imperial/metric conversion.
This uses Python formatting rules to set the text output.
One can use %s for no conversion, %d for integer conversion, %f for float conversion, etc.
You can also use Qt rich text code.
Typical template used for formatting imperial float numbers to text would be %9.4f or %9.4f inch.

alt_textTemplate

This is usually used for metric (G21) numerical settings.
This uses Python formatting rules to set the text output.
Typical template used for formatting metric float to text would be %10.3f or %10.3f mm.

Es basiert auf PyQts QLabel.

2.12. StatusImageSwitcher - Controller Status Image Switcher

Status image switcher will switch between images based on LinuxCNC states.

*watch_spindle

Wechselt zwischen 3 Bildern: stop, fwd, revs.

*watch_axis_homed

Toggles between 2 images: axis not homed, axis homed.

*watch_all_homed

Would toggle between 2 images: not all homed, all homed.

*watch_hard_limits

Würde zwischen 2 Bildern oder einem pro Gelenk umschalten.

Here is an example of using it to display an icon of Z axis homing state:

QtVCP StatusImageSwitcher: Controller Status Image Switcher
Abbildung 7. QtVCP StatusImageSwitcher: Controller Status Image Switcher

In the properties section notice that:

  • watch_axis_homed is checked

  • axis_letter is set to Z

If you double click the image_list a dialog will show and allow you to add image paths to.

If you have one image as an icon and one clear image then that will look like it shows and hides the icon.

Selecting image paths can be done by selecting the pixmap property and selecting an image.

Anmerkung
The pixmap setting is for test display only and will be ignored outside of Qt Designer.
  • Right click the image name and you should see Copy path.

  • Click Copy path.

  • Now double click the image list property so the dialog shows.

  • Click the New button.

  • Paste the image path in the entry box.

Do that again for the next image.
Use a clear image to represent a hidden icon.

Sie können die Anzeige der Bilder in der Bilderliste testen, indem Sie die image number (engl. für Bildnummer) ändern. In diesem Fall ist 0 unhomed und 1 würde homed sein.
Dies ist nur für die Testanzeige und wird außerhalb von Qt Designer ignoriert.

2.13. StatusStacked - Mode Status Display Switching Widget

Dieses Widget zeigt eines von drei Panels an, je nach Modus von LinuxCNC.

This allows you to automatically display different widgets on Manual, MDI and Auto modes.

TODO

It is based on PyQt’s QStacked widget.

2.14. JogIncrements - Jog Increments Value Selection Widget

This widget allows the user to select jog increment values for jogging.

The jogging values come from the INI file under:

  • [DISPLAY]INCREMENTS, or

  • [DISPLAY]ANGULAR_INCREMENTS

This will be available to all widgets through STATUS.

You can select linear or angular increments by the property linear_option in Qt Designer property editor.

Es basiert auf PyQts ComboBox.

2.15. ScreenOption - General Options Setting widget

This widget doesn’t add anything visually to a screen but sets up important options.

This is the preferred way to use these options.

Eigenschaften

These properties can be set in Qt Designer, in Python handler code or (if appropriate) in stylesheets.

These include:

halCompBaseName

If left empty QtVCP will use the screen’s name as the HAL component’s basename.
If set, QtVCP will use this string as the HAL component’s basename.
If the -c command line option is used when loading QtVCP, it will use the name specified on the command line - it overrides all above options.
If you programmatically set the basename in the handlerfile - it will override all above options.
This property cannot be set in stylesheets.

notify_option

Hooking into the desktop notification bubbles for error and messages.

notify_max_messages

Number of messages shown on screen at one time.

catch_close_option

Catching the close event to pop up a 'are you sure' prompt.

close_overlay_color

Farbe der transparenten Ebene, die beim Verlassen angezeigt wird.

catch_error_option

Überwachung des LinuxCNC-Fehlerkanals.
Dies sendet auch die Nachricht über STATUS an alles, das sich registriert.

play_sounds_option

Abspielen von Sounds mit beep, espeak und dem Systemsound.

use_pref_file_option

Setting up a preferences file path.
Using the magic word WORKINGFOLDER in the preference file path will be replaced with the launched configuration path, e.g. WORKINFOLDER/my_preferences.

use_send_zmq_option

Wird verwendet, um ZMQ-basierte ausgehende Nachrichten zu initiieren.

use_receive_zmq_messages

Used to initiate ZMQ based in coming messages.
These messages can be used to call functions in the handler file, allowing external programs to integrate tightly with QtVCP based screens.

embedded_program_option

In der INI definierte Programme einbetten.

default_embed_tab

This is the property for a default location to embed external programs.
It should be set to name of a tab page widget in Qt Designer.

focusOverlay_option

Focus_overlay legt ein transparentes Bild oder ein farbiges Feld über den Hauptbildschirm, um den Fokus auf ein externes Ereignis zu betonen - normalerweise ein Dialog.

messageDialog_option

Richtet den Nachrichtendialog ein - wird für allgemeine Nachrichten verwendet.

message_overlay_color

Farbe der transparenten Ebene, die angezeigt wird, wenn der Nachrichtendialog eingeblendet wird.

closeDialog_option

Richtet den Standarddialog zum Schließen des Bildschirms ein.

entryDialog_option

Richtet den numerischen Eingabedialog ein.

entryDialogSoftKey_option

Richtet eine schwebende Softwaretastatur ein, wenn der Eingabedialog fokussiert ist.

entry_overlay_color

Farbe der transparenten Ebene, die angezeigt wird, wenn der Eingabedialog angezeigt wird.

toolDialog_option

Richtet den manuellen Werkzeugwechsel-Dialog ein, inklusive HAL-Pin.

tool_overlay_color

Farbe der transparenten Ebene, die angezeigt wird, wenn der Werkzeugdialog angezeigt wird.

ToolUseDesktopNotify

Option zur Verwendung von Desktop-Benachrichtigungsdialogen für manuelle Werkzeugwechseldialoge.

ToolFrameless

Framesless-Dialoge können von Benutzern nicht einfach verschoben werden.

fileDialog_option

Richtet den Dateiauswahldialog ein.

file_overlay_color

Farbe der transparenten Ebene, die angezeigt wird, wenn der Dateidialog angezeigt wird.

keyboardDialog_option

Richtet ein Tastatureingabe-Widget ein.

keyboard_overlay_color

Farbe der transparenten Ebene, die angezeigt wird, wenn der Tastaturdialog angezeigt wird.

vesaProbe_option

Richtet den Versa-Style-Probe-Dialog ein.

versaProbe_overlay_color

Farbe der transparenten Ebene, die angezeigt wird, wenn der Dialog versaProbe angezeigt wird.

macroTabDialog_option

legt den Makro-Auswahldialog fest.

macroTab_overlay_color

Farbe der transparenten Ebene, die angezeigt wird, wenn der macroTab-Dialog angezeigt wird.

camViewDialog_option

Richtet den Kameraausrichtungsdialog ein.

camView_overlay_color

Farbe der transparenten Ebene, die angezeigt wird, wenn der Dialog camView angezeigt wird.

toolOffset_option

Sets up the tool offset display/editor dialog.

toolOffset_overlay_color

Farbe der transparenten Ebene, die angezeigt wird, wenn der toolOffset-Dialog angezeigt wird.

originOffset_option

Richtet das Dialogfeld für die Anzeige/Editierung des Ursprungs ein.

originOffset_overlay_color

Farbe der transparenten Ebene, die angezeigt wird, wenn der originOffset-Dialog angezeigt wird.

calculatorDialog_option

Sets up the calculator entry dialog.

calculator_overlay_color

Farbe der transparenten Ebene, die angezeigt wird, wenn das Dialogfeld "Rechner" angezeigt wird.

machineLogDialog_option

Richtet einen Dialog ein, um Protokolle von der Maschine und QtVCP anzuzeigen.

machineLog_overlay_color

Farbe der transparenten Ebene, die angezeigt wird, wenn der machineLog-Dialog angezeigt wird.

runFromLineDialog_option

Richtet einen Dialog ein, der die Startoptionen anzeigt, wenn die Maschinenausführung von einer beliebigen Zeile aus gestartet wird.

runFromLine_overlay_color

Farbe der transparenten Ebene, die angezeigt wird, wenn der runFromLine-Dialog angezeigt wird.

Setting Properties Programmatically

Der Screendesigner wählt die Standardeinstellungen des Widgets screenOptions aus.

Once chosen, most won’t ever need to be changed. But if needed, some can be changed in the handler file or in stylesheets.

  • In the handler file:
    Here we reference the widget by the Qt Designer user defined name:

    # red,green,blue,alpha 0-255
    color = QtGui.QColor(0, 255, 0, 191)
    self.w.screen_options.setProperty('close_overlay_color', color)
    self.w.screen_options.setProperty('play_sounds_option',False)
  • In style sheets:
    Here we can reference the widget by Qt Designer user defined name or by widget class name.

    /* red, green, blue 0-255, alpha 0-100% or 0.0 to 1.0 */
    /* the # sign is used to refer to Qt Designer defined widget name */
    /* matches/applied to only this named widget */
    #screen_options {
      qproperty-close_overlay_color: rgba(0, 255, 0, 0.75)
    }
    /* red, green, blue 0-255, alpha 0-100% or 0.0 to 1.0 */
    /* use widget class name */
    /* matches/applied to all widgets of this class */
    ScreenOptions {
      qproperty-close_overlay_color: rgba(0, 255, 0, 0.75)
    }

Some settings are only checked on startup so will not cause changes after startup. In these cases you would need to make the changes in Qt Designer only.

Einträge in der Einstellungsdatei

Wenn die Option Voreinstellungsdatei ausgewählt ist, erstellt das Widget screenOption eine INI-basierte Voreinstellungsdatei.

Während andere QtVCP Widgets diese Liste ergänzen, fügt das screenOptions Widget diese Einträge unter den folgenden Überschriften hinzu:

[SCREEN_OPTIONS]
catch_errors (bool)
desktop_notify (bool)

Whether to display errors/messages in the system’s notification mechanism.

notify_max_msgs (int)

Anzahl der angezeigten Fehler zu einem Zeitpunkt.

shutdown_check (bool)

Ob ein Bestätigungsdialog erscheinen soll.

sound_player_on (bool)

Schaltet alle Töne ein oder aus.

[MCH_MSG_OPTIONS]
mchnMsg_play_sound (bool)

Um Warntöne wiederzugeben, wenn ein Dialogfeld angezeigt wird.

mchnMsg_speak_errors (bool)

Verwendung von Espeak, um Fehlerbotschaften zu sprechen.

mchnMsg_speak_text (bool)

Espeak verwenden, um alle anderen Nachrichten zu sprechen.

mchnMsg_sound_type (str)

Ton, der abgespielt wird, wenn Nachrichten angezeigt werden. Siehe Hinweise unten.

[USER_MSG_OPTIONS]
usermsg_play_sound (bool)

Um Warntöne wiederzugeben, wenn ein Dialogfeld angezeigt wird.

userMsg_sound_type (str)

Ton, der abgespielt wird, wenn Benutzermeldungen angezeigt werden. Siehe Hinweise unten.

userMsg_use_focusOverlay (bool)
[SHUTDOWN_OPTIONS]
shutdown_play_sound (bool)
shutdown_alert_sound_type (str)

Ton, der abgespielt wird, wenn Nachrichten angezeigt werden. Siehe Hinweise unten.

shutdown_exit_sound_type (str)

Ton, der abgespielt wird, wenn Nachrichten angezeigt werden. Siehe Hinweise unten.

shutdown_msg_title (str)

Kurzer Titelstring, der im Dialog angezeigt wird.

shutdown_msg_focus_text (str)

Großer Text, der in die Fokusebene eingeblendet wird.

shutdown_msg_detail (str)

Longer descriptive string to display in dialog.

NOTIFY_OPTIONS
notify_start_greeting (bool)

Whether to display a greeting dialog on start-up.

notify_start_title (str)

Kurzer Titelstring.
Wenn die Option "Sprechen" ebenfalls ausgewählt ist, wird der Titel mit Espeak gesprochen.

notify_start_detail (str)

Längere Zeichenfolge zur Beschreibung.

notify_start_timeout (int)

Zeit in Sekunden bis zur Anzeige vor dem Schließen.

*_sound_type Einträge
  • System Sounds
    In Debian/Ubuntu/Mint based installations these system sounds should be available as sound-type entries above:

    • ERROR

    • READY

    • DONE

    • ATTENTION

    • RING

    • LOGIN

    • LOGOUT

    • BELL

    Diese Sound-Optionen erfordern die Installation von python3-gst1.0.

  • Audio Files
    You can also specify a file path to an arbitrary audio file.
    You can use ~ in path to substitute for the user home file path.

  • Kernel Beeps
    If the beep kernel module is installed and it is not disabled, these sound-type entries are available:

    • BEEP

    • BEEP_RING

    • BEEP_START

  • Text-To-Speech
    If the Espeak module (python3-espeak) is installed, you can use the SPEAK entry to pronounce text:

  • SPEAK '_my message_'

2.16. StatusSlider - Controller-Einstellungs-Schieberegler-Widget

This widget allow the user to adjust a LinuxCNC setting via a slider.

Die Kurzbeschreibung kann folgendes anpassen:

  • Jog rate

  • Winkel-Jog-Rate

  • Vorschubgeschwindigkeit

  • Spindel-Override-Rate

  • Eilgang Übersteuerungsrate (engl. rapid override rate)

Eigenschaften

StatusSlider has the following properties:

halpin_option

Sets option to make a HAL float pin that reflects current value.

rapid_rate

Selects a rapid override rate slider.

feed_rate

Selects a feed override rate slider.

spindle_rate

Selects a spindle override rate slider.

jograte_rate

Wählt einen linearen Jograte-Schieberegler aus.

jograte_angular_rate

Selects a angular jograte slider.

max_velocity_rate

Selects a maximum velocity rate slider.

alertState

String zum Definieren der Stiländerung: read-only (enlg. nur lesen), under (engl. für unter), over (engl. für über) und normal.

alertUnder

Legt den Float-Wert fest, der dem Stylesheet eine "Unter"-Warnung signalisiert.

alertOver

Legt den Gleitkommawert fest, der dem Stylesheet die Warnung "Über" signalisiert.

Diese können eingestellt werden in:

  • Qt Designer

  • Python handler code,

    self.w.status_slider.setProperty('spindle_rate',True)
    self.w.status_slider.setProperty('alertUnder',35)
    self.w.status_slider.setProperty('alertOver',100)
  • Oder (gegebenenfalls) in Stylesheets.

    /* Warnfarben für Übersteuerungen, wenn sie außerhalb des normalen Bereichs liegen*/
    /* Name des Widget-Objekts ist slider_spindle_ovr */
    
    #slider_spindle_ovr[alertState='over'] {
        background: red;
    }
    #slider_spindle_ovr[alertState='under'] {
        background: yellow;
    }

It is based on PyQt’s QSlider.

2.17. StateLED - Controller-Status-LED-Widget

This widget gives status on the selected LinuxCNC state.

States

Die Statusoptionen sind:

is_paused_status
is_estopped_status
is_on_status
is_idle_status_
is_homed_status
is_flood_status
is_mist_status
is_block_delete_status
is_optional_stop_status
is_joint_homed_status
is_limits_overridden_status
is_manual_status
is_mdi_status
is_auto_status
is_spindle_stopped_status
is_spindle_fwd_status
is_spindle_rev_status
is_spindle_at_speed_status
is_neg_limit_tripped
is_pos_limit_tripped
is_limits_tripped

Eigenschaften

Es gibt Eigenschaften, die geändert werden können:

halpin_option

Fügt einen Ausgangspin hinzu, der den ausgewählten Zustand wiedergibt.

invert_state_status

Invert the LED state compared to the LinuxCNC state.

diameter

Diameter of the LED.

color

Color of the LED when on.

off_color

Color of the LED when off.

alignment

Qt-Hinweis zur Ausrichtung.

state

Aktueller Zustand der LED (zum Testen in Qt Designer).

flashing

Schaltet die Blinkoption ein und aus.

flashRate

Sets the flash rate.

The LED properties can be defined in a stylesheet with the following code added to the .qss file.

State_LED #name_of_led{       <1>
  qproperty-color: red;
  qproperty-diameter: 20;
  qproperty-flashRate: 150;
}
  1. name_of_led wäre der im Editor von Qt Designer definierte Name.

It is based on the LED widget.

2.18. StatusAdjustmentBar - Widget zum Einstellen von Controller-Werten

Dieses Widget ermöglicht die Einstellung von Werten über Schaltflächen, während ein Balken angezeigt wird.

Außerdem gibt es einen optionalen Hoch/Tief-Knopf, der gedrückt gehalten werden kann, um die Stufen einzustellen.

Die Kurzbeschreibung kann folgendes anpassen:

  • Jog rate

  • Winkel-Jog-Rate

  • Vorschubgeschwindigkeit

  • Spindel-Override-Rate

  • Eilgang Übersteuerungsrate (engl. rapid override rate)

It is based on PyQt’s QProgressBar.

2.19. SystemToolButton - Widget zur Auswahl des Benutzersystems

This widget allows you to manually select a G5x user system by pressing and holding.

Wenn Sie den Text der Schaltfläche nicht festlegen, wird sie automatisch auf das aktuelle System aktualisiert.

Es basiert auf PyQts QToolButton.

2.20. MacroTab - Spezielles Makro-Widget

QtVCP MacroTab: Special Macros Widget
Abbildung 8. QtVCP MacroTab: Spezielles Makro-Widget

Mit diesem Widget kann der Benutzer spezielle Makroprogramme für die Erledigung kleinerer Aufgaben auswählen und anpassen.

Es verwendet Bilder zur visuellen Darstellung des Makros und für ein Symbol.

Es sucht nach speziellen Makros unter Verwendung der INI-Definition:

[RS274NGC]
SUBROUTINE_PATH =

Die Makros sind O-Wort-Unterprogramme mit speziellen Kommentaren für die Zusammenarbeit mit dem Launcher. Die ersten drei Zeilen müssen die untenstehenden Schlüsselwörter enthalten, die vierte ist optional.

Hier ist ein Beispiel für die ersten vier Zeilen einer O-Word-Datei:

; MACROCOMMAND = Entry1,Entry2
; MACRODEFAULTS = 0,true
; MACROIMAGE = my_image.svg,Icon layer number,Macro layer number
; MACROOPTIONS = load:yes,save:yes,default:default.txt,path:~/macros
MACROCOMMAND

Dies ist die erste Zeile in der O-Wort-Datei.

Es handelt sich um eine durch Kommata getrennte Liste von Text, der über einem Eintrag angezeigt werden soll.
Es gibt eine für jede erforderliche Variable in der O-Wort-Funktion.

Wenn das Makro keine Variablen benötigt, lassen Sie es leer:

; MACROCOMMAND=
MACRODEFAULTS

Dies muss die zweite Zeile in der O-Wort-Datei sein.

Es handelt sich um eine durch Kommata getrennte Liste der Standardwerte für jede Variable in der O-Wort-Funktion.

Wenn Sie das Wort "true" oder "false" in der Liste verwenden, wird ein "checkbutton" angezeigt.

MACROIMAGE

Dies muss die dritte Zeile in der O-Wort-Datei sein.

  • SVG Images
    If using SVG image files, they must end with the .svg extension.

    Die Bilder müssen zu SVG-Ebenen hinzugefügt werden, die zur Definition der verschiedenen Bilder für Makro und Symbol verwendet werden.

    Wert ist eine durch Kommata getrennte Liste von drei geordneten Feldern:

    ; MACROIMAGE=filename.svg,macro_layer_name[,icon_layer_name]

    Mit:

    _dateiname_.svg

    Name der SVG-Bilddatei als erstes Feld.
    Es wird davon ausgegangen, dass sie sich im selben Ordner befindet wie die O-Wort-Datei.

    *macro_layer_name

    Name der Makrobildebene als zweites Feld.

    icon_layer_name

    Name der Ikonenebene als optionales drittes Feld. Fehlt der dritte Eintrag, wird für Makro und Symbol das gleiche Bild verwendet.

  • PNG/JPG Images:
    Value remains a comma separated list:

    ; MACROIMAGE=macro_image.(png|jpg)[,icon_image.(png|jpg)]

    Mit:

    _macro_image_.(png|jpg)

    Name der Bilddatei des Makros als erstes Feld.
    Es wird davon ausgegangen, dass sich die Bilddatei im selben Ordner befindet wie das Makro.

    _icon_image_.(png|jpg)

    Icon image file name as optional second field.
    If the second entry is missing the same image will be used for macro and image.

Wenn das Schlüsselwort vorhanden ist, aber die Einträge fehlen, werden keine Bilder verwendet.

MACROOPTIONS

Diese optionale Zeile muss die vierte Zeile in der O-Wort-Datei sein.

Es handelt sich um eine durch Kommata getrennte Liste von Schlüsselwörtern und Daten:

LOAD:yes

Zeigt einen Button zum Laden an.

SAVE:yes

Zeigt einen Button zum Speichern an.

2.21. MDILine - MDI-Befehlszeileneingabe-Widget

Hier kann man MDI-Befehle eingeben.

Eine Popup-Tastatur ist verfügbar.

Eingebettete Befehle

There are also embedded commands available from this widget.

Geben Sie einen dieser Befehle ein, um das entsprechende Programm zu laden oder die Funktion aufzurufen:

HALMETER

Startet das LinuxCNC Link:../hal/tools.html#sec:halmeter[halmeter] Dienstprogramm.

HALSHOW

Startet das LinuxCNC Link:../hal/halshow.html#cha:halshow[halshow] Dienstprogramm.

HALSCOPE

Startet das LinuxCNC Link:../hal/tutorial.html#sec:tutorial-halscope[halscope] Dienstprogramm.

STATUS

Startet das LinuxCNC Link:../man/man1/linuxcnctop.1.html[status] Dienstprogramm.

CALIBRATION

Starts LinuxCNC Calibration

CLASSICLADDER

Startet die Link:../ladder/classic-ladder.html[ClassicLadder GUI], wenn die ClassicLadder realtime HAL component durch die Konfigurationsdateien des Rechners geladen wurde.

PREFERENCE

Lädt die Einstellungsdatei in den GcodeEditor.

CLEAR HISTORY

Löscht den MDI-Verlauf.

net

Siehe Link:../man/man1/halcmd.1.html#COMMANDS[halcmd net commands].
Wenn der Befehl nicht erfolgreich ist, wird ein Fehler ausgegeben.

  • Syntax: net <signal name> <pin name>

  • Beispiel: net plasmac:jog-inhibit motion.jog-stop

setp

Sets den Wert eines Pins oder einer parameter.
Gültige Werte hängen vom Objekttyp des Pins oder Parameters ab.
Dies führt zu einem Fehler, wenn die Datentypen nicht übereinstimmen oder der Pin mit einem Signal verbunden ist.

  • Syntax: setp <Pin/Parameter-Name> <Wert>

  • Beispiel: setp plasmac.resolution 100

unlinkp

Trennt einen Pin von einem Signal.
Ein Fehler tritt auf, wenn der Pin nicht vorhanden ist.
Running LinuxCNC von Terminal kann helfen, die Ursache zu bestimmen, wie Fehlermeldungen von hal_lib.c wird dort angezeigt werden.

  • Syntax: unlinkp <Pin-Name>

  • Beispiel: unlinkp motion.jog-stop

Anmerkung
Die Funktion MDILine spindle_inhibit kann von der Handler-Datei einer grafischen Benutzeroberfläche verwendet werden, um die Spindelbefehle M3, M4 und M5 bei Bedarf zu sperren.

Es basiert auf PyQts QLineEdit.

2.22. MDIHistory - MDI-Befehlsverlaufs-Widget

Zeigt eine scrollbare Liste vergangener MDI-Befehle an.

An edit line is embedded for MDI commands. The same MDILine embedded commands may be accessed from this widget.

Der Verlauf wird in einer Datei aufgezeichnet, die in der INI unter der Überschrift [DISPLAY] definiert ist (dies ist die Standardeinstellung):

MDI_HISTORY_FILE = '~/.axis_mdi_history'

2.23. MDITouchy - Touchscreen-MDI-Eingabe-Widget

QtVCP MDITouchy: Touchscreen-MDI-Eingabe-Widget
Abbildung 9. QtVCP MDITouchy: Touchscreen-MDI-Eingabe-Widget

Dieses Widget zeigt Buttons und Eingabezeilen für die Eingabe von MDI-Befehlen an.

Basierend auf LinuxCNC’s Touchy Screen’s MDI-Eingabe-Prozess, dessen großen Buttons sind sehr nützlich für Touchscreens.

So verwenden Sie MDITouchy:

  • First press one of the G/XY, G/RO, M or T button. On the left will show the entry fields that can be filled out.

  • Drücken Sie dann „Weiter“ und „Zurück“, um zwischen den Feldern zu navigieren.

  • Calc öffnet einen Taschenrechnerdialog.

  • Clear clears the current entry.

  • Set Tool will call for a tool change.

  • Set Origin will allow setting the origin of the current G6x system.

  • Macro will call any available macro ngc programs.

The widget requires an explicit call to MDITouchy Python code to actually run the MDI command:

  • For handler file code
    If the widget was named mditouchy in Qt Designer, the command below would run the displayed MDI command:

    self.w.mditouchy.run_command()
  • For action button use
    If the widget was named mditouchy in Qt Designer, use the action button’s Call Python commands option and enter:

    INSTANCE.mditouchy.run_command()

Die Makro-Schaltfläche durchläuft die in der INI-Überschrift [ANZEIGE] definierten Makros.

Fügen Sie eine oder mehrere MACRO-Zeilen im folgenden Format hinzu:

MACRO = macro_name [param1] [... paramN]

Im folgenden Beispiel ist increment der Name des Makros, und es akzeptiert zwei Parameter, die xinc und yinc heißen.

MACRO = increment xinc yinc

Now, place the macro in a file named macro_name.ngc in the PROGRAM_PREFIX directory, or into any directory in the SUBROUTINE_PATH specified in the INI file.

Um bei dem obigen Beispiel zu bleiben, würde es increment.ngc heißen und sein Inhalt könnte wie folgt aussehen:

O<increment> sub
G91 G0 X#1 Y#2
G90
O<increment> endsub

Beachten Sie, dass der Name des Unterprogramms exakt mit dem Dateinamen und dem Makronamen übereinstimmt, einschließlich Groß- und Kleinschreibung.

When you invoke the macro by pressing the Macro button you can enter values for parameters (xinc and yinc in our example).
These are passed to the macro as positional parameters: #1, #2#N respectively.
Parameters you leave empty are passed as value 0.

Wenn es mehrere verschiedene Makros gibt, drücken Sie wiederholt die Makrotaste, um sie zu durchlaufen.

Wenn Sie in diesem einfachen Beispiel -1 für xinc eingeben und die Ausführung des MDI-Zyklus aufrufen, wird eine schnelle G0-Bewegung ausgelöst, die eine Einheit nach links geht.

Diese Makrofunktion ist nützlich für das Antasten von Kanten/Löchern und andere Einrichtungsaufgaben sowie vielleicht für das Fräsen von Löchern oder andere einfache Operationen, die vom Bedienfeld aus durchgeführt werden können, ohne dass speziell geschriebene G-Code-Programme erforderlich sind.

2.24. OriginOffsetView - Ursprungsansicht und Einstellungs-Widget

QtVCP OriginOffsetsView: Origins-Ansicht und Einstellungs-Widget
Abbildung 10. QtVCP OriginOffsetsView: Origins-Ansicht und Einstellungs-Widget

Dieses Widget ermöglicht es, Offsets von Benutzer-spezifizierten Ursprüngen direkt zu visualisieren und zu ändern.

Es wird die Parameterdatei von LinuxCNC für vorgenommene oder gefundene Änderungen aktualisieren.

Die Einstellungen können in LinuxCNC nur nach der Referenzfahrt und im Ruhezustand des Motion Controllers geändert werden.

The display and entry will change between metric and imperial, based on LinuxCNC’s current G20 / G21 setting.

The current in-use user system will be highlighted.

Extra actions can be integrated to manipulate settings.
These actions depend on extra code added either to a combined widget, like originoffsetview dialog, or the screens handler code.
Typical actions might be Clear Current User offsets or Zero X.

Clicking on the columns and rows allows one to adjust the settings.

A dialog can be made to popup for data or text entry.

The comments section will be recorded in the preference file.

Es basiert auf PyQt’s QTableView, QAbstractTableModel, und ItemEditorFactory.
Eigenschaften, Funktionen und Stile der PyQt-Basisobjekte sind immer verfügbar.

Eigenschaften

OriginOffsetView has the following properties:

dialog_code_string

Sets which dialog will pop up with numerical entry.

test_dialog_code_string

Sets which dialog will pop up with text entry.

metric_template

Metric numerical data format.

imperial_template

Imperial numerical data format.

styleCodeHighlight

Current in-use user system highlight color.

Diese können eingestellt werden in:

  • Qt Designer, in

  • Python handler code

    self.w.originoffsetview.setProperty('dialog_code','CALCULATOR')
    self.w.originoffsetview.setProperty('metric_template','%10.3f')
  • Or (if appropriate) in stylesheets

    OriginOffsetView{
      qproperty-styleColorHighlist: lightblue;
    }

2.25. StateEnableGridlayout - Controller State Enabled Container Widget

_disable the widgets inside it depending on LinuxCNC's current state_.

This is a container that other widgets can be placed in.

Embedded widgets are be greyed-out when the StateEnableGridlayout is disabled.

It can selectably react to:

  • Machine on

  • Interpreter idle

  • E-stop off

  • All-homed

It is based on PyQt’s QGridLayout.

2.26. MachineLog - Machine Events Journal Display Widget

FIXME MachineLog documentation

2.27. JointEnableWidget - FIXME

FIXME JointEnableWidget documentation

2.28. StatusImageSwitcher - Controller Status Image Switching Widget

Dieses Widget wird Bilder basierend auf dem LinuxCNC-Status anzeigen.

You can watch:

  • the state of the spindle,

  • the state of all homed,

  • the state of a certain axis homed,

  • the state of hard limits.

It is based on PyQt’s FIXME

2.29. FileManager - File Loading Selector Widget

QtVCP FileManager: File Loading Selector Widget
Abbildung 11. QtVCP FileManager: File Loading Selector Widget

This widget is used to select files to load.

Sie verfügt über die Möglichkeit, die Namen mit Hardware wie einem Handgerät (engl. MPG) zu kennzeichnen.

One can class patch the function load(self,fname) to customize file loading.

The function getCurrentSelected() will return a Python tuple, containing the file path and whether it is a file.

temp = FILEMANAGER.getCurrentSelected()
print('filepath={}'.format(temp[0]))
if temp[1]:
    print('Is a file')
Stylesheets Properties
doubleClickSelection (bool)

Determines whether or not to require double clicking on a folder.
Single clicking a folder (False) is enabled by default and is intended for touch screen users.
The following shows an example of how to set this property:

#filemanager {
    qproperty-doubleClickSelection: True;
}
showListView (bool)

Determines whether or not to show the file/folder structure in list form.
Table view (False) is enabled by default.
The following shows an example of how to set this property:

#filemanager {
    qproperty-showListView: True;
}

It is based on PyQt’s FIXME

2.30. RadioAxisSelector - FIXME

FIXME RadioAxisSelector documentation

2.31. ToolOffsetView - Tools Offsets View And Edit Widget

QtVCP ToolOffsetView: Tools Offsets View And Edit Widget
Abbildung 12. QtVCP ToolOffsetView: Tools Offsets View And Edit Widget

This widget displays and allows one to modify tools offsets.

It will update LinuxCNC’s tool table for changes made or found.

The tool settings can only be changed in LinuxCNC after homing and when the motion controller is idle.

The display and entry will change between metric and imperial based on LinuxCNC’s current G20/G21 setting.

The current in-use tool will be highlighted, and the current selected tool will be highlighted in a different color.

The checkbox beside each tool can be used to select too for an action that depends on extra code added either to a combined widget, like the toolOffsetView dialog or the screens handler code.
Typical actions are load selected tool, delete selected tools, etc.

Clicking on the columns and rows allows one to adjust the settings.

A dialog can be made to popup for data or text entry.

The comments section will typically be displayed in the manual tool change dialog.

If using a lathe configuration, there can be columns for X and Z wear.

To use these columns to adjust the tool wear, it requires a remapped tool change routine.

Es basiert auf PyQt’s QTableView, QAbstractTableModel, und ItemEditorFactory.
Eigenschaften, Funktionen und Stile der PyQt-Basisobjekte sind immer verfügbar.

Eigenschaften

ToolOffsetView hat Eigenschaften, die im Qt Designer, im Python-Handler-Code oder (falls zutreffend) in Stylesheets eingestellt werden können:

dialog_code_string

Sets which dialog will pop up with numerical entry.

test_dialog_code_string

Sets which dialog will pop up with text entry.

metric_template

Metric numerical data format.

imperial_template

Imperial numerical data format.

styleCodeHighlight

Current tool-in-use highlight color.

styleCodeSelected

Selected highlight color.

In a handler file:

self.w.tooloffsetview.setProperty('dialog_code','CALCULATOR')
self.w.tooloffsetview.setProperty('metric_template','%10.3f')

und in Stylesheets:

ToolOffsetView{
  qproperty-styleColorHighlist: lightblue;
  qproperty-styleColorSelected: #444;
}
Funktionen

Die Funktion ToolOffsetView hat einige Funktionen, die für Screenbuilder nützlich sind, um Aktionen hinzuzufügen:

add_tool()

Fügt ein leeres Dummy-Werkzeug (99) hinzu, das der Benutzer nach Belieben bearbeiten kann.

delete_tools()

Löscht die in der Checkbox ausgewählten Werkzeuge.

get_checked_list()

Gibt eine Liste der durch Ankreuzfelder ausgewählten Werkzeuge zurück.

set_all_unchecked()

Hebt die Markierung aller ausgewählten Werkzeuge auf.

Example for handler file executing aforementioned functions.
self.w.tooloffsetview.add_tool()
self.w.tooloffsetview.delete_tools()
toolList = self.w.tooloffsetview.get_checked_list()
self.w.tooloffsetview.set_all_unchecked()

2.32. BasicProbe - Einfaches Fräs-Tast-Widget

QtVCP BasicProbe: Einfaches Fräs-Tast-Widget
Abbildung 13. QtVCP BasicProbe: Einfaches Fräs-Tast-Widget

Widget zum Sondieren auf einer Fräse. Wird vom QtDragon-Bildschirm verwendet.

2.33. VersaProbe - Mill Probing Widget

QtVCP VersaProbe: Mill Probing Widget
Abbildung 14. QtVCP VersaProbe: Mill Probing Widget

Widget zum Sondieren auf einer Fräse. Wird vom QtDragon-Bildschirm verwendet.

3. Dialog-Widgets

Dialoge werden verwendet, um unmittelbar benötigte Informationen gezielt darzustellen oder abzufragen.

Die typischerweise verwendeten Dialoge können mit dem ScreenOptions widget geladen werden.

Sie können sie auch direkt zur UI hinzufügen - allerdings muss jedes Dialogfeld einen eindeutigen Startnamen haben, sonst werden mehrere Dialogfelder nacheinander angezeigt.

Dialoge aus Python-Code verwenden

You can show dialogs directly with Python code, but a safer way is to use STATUS messages to request the dialog to launch and to return the gathered information.

  • Register to STATUS channel:
    To set this up, first register to catch the general message from STATUS:

    STATUS.connect('general',self.return_value)
  • Add a function to call a dialog:
    This function must build a message dict to send to the dialog.
    This message will be passed back in the general message with the addition of the return variable.
    It is possible to add extra user information to the message. The dialog will ignore these and pass them back.

    NAME

    Launches code name of dialog to show.

    ID

    A unique id so we process only a dialog that we requested.

    TITLE

    The title to use on the dialog.

    def show_dialog(self):
        mess = {'NAME':'ENTRY','ID':'__test1__',
                'TITLE':'Test Entry'}
        ACTION.CALL_DIALOG, mess)
  • Add a callback function that processes the general message:
    Keep in mind this function will get all general messages so the dict keynames are not guaranteed to be there. Using the .get() function and/or using try/except is advisable. This function should:

    • check the name and id is the same as we sent,

    • then extract the return value and any user variables.

    # Verarbeitung der STATUS return message
    def return_value(self, w, message):
        rtn = message.get('RETURN')
        code = bool(message.get('ID') == '__test1__')
        name = bool(message.get('NAME') == 'ENTRY')
        if code and name and not rtn is None:
            print('Entry return value from {} = {}'.format(code, rtn))

3.1. LcncDialog - Allgemeines Nachrichtendialog-Widget

Dies ist ein Allgemeines Nachrichten-Dialog-Widget.

Wenn ein Fokus-Overlay-Widget vorhanden ist, kann es signalisieren, dass es angezeigt werden soll.

Wenn die Klangbibliothek eingerichtet ist, kann sie Klänge abspielen.

Es gibt Optionen, die gesetzt werden können, wenn ein Dialog angefordert wird, diese würden der Nachricht dict hinzugefügt.

TITLE

Titel des Dialogfensters.

MESSAGE

Titel Nachrichtentext in Fettdruck.

MORE

Standardtext unter der Überschrift.

DETAILS

Ursprünglicher versteckter Text.

TYPE (OK|YESNO|OKCANCEL)
ICON (QUESTION|INFO|CRITICAL|WARNING)
PINNAME

Noch nicht implementiert.

FOCUSTEXT (overlay text|None)

Text, der angezeigt werden soll, wenn das Fokus-Overlay verwendet wird. Verwenden Sie None für keinen Text.

FOCUSCOLOR (QColor(_R, G, B, A_))

Farbe, die verwendet werden soll, wenn das Fokus-Overlay verwendet wird.

PLAYALERT

Abzuspielender Ton, falls vorhanden, z.B. SPEAK <Spoken_message> .

Bei der Verwendung der Funktion "Abfrage-Dialog" von "STATUS" ist der "Standard-Startname" MESSAGE.

Sie basiert auf der QMessagebox von PyQt.

3.2. ToolDialog - Dialog-Widget für den manuellen Werkzeugwechsel

QtVCP ToolDialog: Dialog zum manuellen Werkzeugwechsel
Abbildung 15. QtVCP ToolDialog: Dialog zum manuellen Werkzeugwechsel

Dies wird als Aufforderung zum manuellen Werkzeugwechsel verwendet.

Es verfügt über HAL Pins, die mit dem controller der Maschine verbunden werden können. Die Pins haben den gleichen Namen wie die ursprüngliche AXIS manuelle Werkzeugeingabeaufforderung und funktionieren gleich.

Der Werkzeugwechsel-Dialog kann nur über HAL-Pins aufgerufen werden.

Wenn ein Fokus-Overlay-Widget vorhanden ist, signalisiert es, dass es angezeigt werden soll.

Sie basiert auf der QMessagebox von PyQt.

3.3. FileDialog - Dialog Widget zum Laden und Speichern von Dateien

QtVCP FileDialog: Widget zum Laden und Speichern von Dateien
Abbildung 16. QtVCP FileDialog: Widget für das Laden und Speichern von Dateien

Dies wird zum Laden von G-Code-Dateien verwendet.

Wenn ein Fokus-Overlay-Widget vorhanden ist, signalisiert es, dass es angezeigt werden soll.

Wenn Sie die Request-Dialog-Funktion von STATUS verwenden, lauten die Standard-Startnamen LOAD oder SAVE.

Es gibt options, die beim Anfordern eines Dialogs gesetzt werden können, diese würden dem Meldungsdiktat hinzugefügt:

EXTENSIONS
FILENAME
DIRECTORY

Ein Beispiel für einen Python-Aufruf, für einen Load-Dialog:

mess = {'NAME':'LOAD','ID':'_MY_DIALOG_',
            'TITLE':'Load Some text File',
            'FILENAME':'~/linuxcnc/nc_files/someprogram.txt',
            'EXTENSIONS':'Text Files (*.txt);;ALL Files (*.*)'
            }
ACTION.CALL_DIALOG(mess)

Und für einen Speicherdialog

mess = {'NAME':'SAVE','ID':'_MY_DIALOG_',
            'TITLE':'Save Some text File',
            'FILENAME':'~/linuxcnc/nc_files/someprogram.txt',
            'EXTENSIONS':'Text Files (*.txt);;ALL Files (*.*)'
            }
ACTION.CALL_DIALOG(mess)

Sie basiert auf der QMessagebox von PyQt.

3.4. OriginOffsetDialog - Dialogfeld-Widget für die Einstellung des Ursprungsversatzes

QtVCP `OriginOffsetDialog`: Widget zur Einstellung des Ursprungsversatzes
Abbildung 17. QtVCP OriginOffsetDialog: Widget zur Einstellung des Ursprungsversatzes

Mit diesem Widget kann man die Nullpunktverschiebung des Benutzersystems direkt in einem Dialogformular ändern.

Wenn ein Fokus-Overlay-Widget vorhanden ist, wird es angezeigt.

Bei Verwendung der request-dialog-Funktion von STATUS ist der standardmäßige Startname ORIGINOFFSET.

Es basiert auf PyQts QDialog.

3.5. ToolOffsetDialog - Dialogfenster-Widget zur Einstellung des Werkzeugversatzes

QtVCP `ToolOffsetDialog`: Werkzeug-Offset-Einstellungsdialog-Widget
Abbildung 18. QtVCP ToolOffsetDialog: Werkzeug-Offset-Einstellungsdialog-Widget

Mit diesem Widget kann man die Werkzeugversätze direkt in einem Dialogformular ändern.

Wenn ein Fokus-Overlay-Widget vorhanden ist, wird es angezeigt.

Bei Verwendung der request-dialog-Funktion von STATUS ist der standardmäßige Startname TOOLOFFSET.

Es basiert auf PyQts QDialog.

3.6. MacroTabDialog - Dialog-Widget zum Starten von Makros

Dies ist ein Dialog zum Anzeigen des Makrotab-Widgets.

MacroTab zeigt eine Auswahl von Makroprogrammen an, die mit Symbolen ausgeführt werden.

Wenn ein Fokus-Overlay-Widget vorhanden ist, signalisiert es, dass es angezeigt werden soll.

When using ``STATUS``'s request-dialog function, the default launch name is MACROTAB.

Es basiert auf PyQts QDialog.

3.7. CamViewDialog - WebCam Part Alignment Dialog Widget

This is a dialog to display the CamView widget for Webcam part alignment.

When using ``STATUS``'s request-dialog function, the default launch name is CAMVIEW.

Es basiert auf PyQts QDialog.

3.8. EntryDialog - Edit Line Dialog Widget

This is a dialog to display an edit line for information entry, such as origin offset.

It returns the entry via STATUS messages using a Python DICT.

The DICT contains at minimum, the name of the dialog requested and an ID code.

When using ``STATUS``'s request-dialog function, the default launch name is ENTRY.

Es basiert auf PyQts QDialog.

3.9. CalculatorDialog - Calculator Dialog Widget

QtVCP CalculatorDialog: Calculator Dialog Widget
Abbildung 19. QtVCP CalculatorDialog: Calculator Dialog Widget

This is a dialog to display a calculator for numeric entry, such as origin offset.

It returns the entry via STATUS messages using a Python DICT.

The DICT contains at minimum, the name of the dialog requested and an ID code.

When using ``STATUS``'s request-dialog function, the default launch name is CALCULATOR.

Es basiert auf PyQts QDialog.

3.10. RunFromLine - Run-From-Line Dialog Widget

QtVCP RunFromLine: Run-From-Line Dialog Widget
Abbildung 20. QtVCP RunFromLine: Run-From-Line Dialog Widget

Dialog to preset spindle settings before running a program from a specific line.

Es basiert auf PyQts QDialog.

3.11. VersaProbeDialog - Part Touch Probing Dialog Widget

QtVCP VersaProbeDialog: Part Touch Probing Dialog Widget
Abbildung 21. QtVCP VersaProbeDialog: Part Touch Probing Dialog Widget

This is a dialog to display a part probing screen based on Verser Probe v2.

Es basiert auf PyQts QDialog.

3.12. MachineLogDialog - Machine and Debugging Logs Dialog Widget

QtVCP MachineLogDialog: Machine and Debugging Logs Dialog Widget
Abbildung 22. QtVCP MachineLogDialog: Machine and Debugging Logs Dialog Widget

This is a dialog to display the machine log and QtVCP’s debugging log.

Es basiert auf PyQts QDialog.

4. Other Widgets

Other available widgets:

4.1. NurbsEditor - NURBS Editing Widget

QtVCP NurbsEditor: NURBS Editing Widget
Abbildung 23. QtVCP NurbsEditor: NURBS Editing Widget

The Nurbs editor allows you to manipulate a NURBS based geometry on screen and then convert NURBS to G-code.

You can edit the G-code on screen and then send it to LinuxCNC.

Es basiert auf PyQts QDialog.

4.2. JoyPad - 5 button D-pad Widget

It is the base class for the HALPad widget.

This widget looks and acts like a 5 button D-pad, with a LED like indicators in a ring.

You can put text or icons in each of the button positions.

You can connect to output signals when the buttons are pressed.

There are also input slots to change the color of the indicator(s).

ENUMS

Es gibt aufgezählte Konstanten, die zur Referenzierung von Indikatorpositionen verwendet werden.
Sie werden im Eigenschaftseditor des Qt Designer-Editors oder im Python-Code verwendet.

NONE
LEFT, L
RIGHT, R
CENTER, C
TOP, T
BOTTOM, B
LEFTRIGHT, X
TOPBOTTOM, A

Für Python-Handler-Code verwenden Sie den Widget-Namen in Qt Designer plus die Referenzkonstante:

self.w.joypadname.set_highlight(self.w.joypadname.LEFT)
Useful Override-able Functions
def _pressedOutput(self, btncode):
    self.joy_btn_pressed.emit(btncode)
    self[''.format(btncode.lower())].emit(True)

def _releasedOutput(self, btncode):
    self.joy_btn_released.emit(btncode)
    self['joy_{}_pressed'.format(btncode.lower())].emit(False)

As coded these function issue (emit) PyQt5 signals (joy_btn_pressed and joy<letter>_pressed) for the any button pressed or released_.

Signal joy_btn_pressed outputs a string code for the button.
Signal joy_<letter>_pressed outputs a bool value.

You could override the functions to do something else if making a custom widget:

Aufrufbare Funktionen
reset_highlight()

Löscht die Hervorhebungsanzeige.

set_highlight(_button_, state=_True_)

Setzen Sie den Hervorhebungsanzeiger an der Position button auf den Zustand state.
Sie können Strings Buchstaben (LRCTBXA) oder Position ENUMS für das Argument der Schaltfläche verwenden.

set_button_icon(_button_, _pixmap_)

Sets the button’s icon pixmap.

set_button_text(_button_, _text_)

Sets the button’s icon text.

set_tooltip(_button_, _text_)

Legt den beschreibenden Text für die Popup-Tooltip-Schaltflächen fest.

setLight(_state_)

Setzt den Highlight-Indikator auf die Farbe True oder False.
Die Funktion set_highlight() muss vorher verwendet werden, um den zu verwendenden Indikator zu setzen.

Signale

These signals will be sent when buttons are pressed.

They can be connected to in Qt Designer editor or Python code.

The first two output a string that indicates the button pressed:

joy_btn_pressed (string)
joy_btn_released (string)
joy_l_pressed (bool)
joy_l_released (bool)
joy_r_pressed (bool)
joy_r_released (bool)
joy_c_pressed (bool)
joy_c_released (bool)
joy_t_pressed (bool)
joy_t_released (bool)
joy_b_pressed (bool)
joy_b_released (bool)

Sie basieren auf PyQt’s Signal (QtCore.pyqtSignal())

Slots

Slots können im Qt Designer-Editor oder in Python-Code verbunden werden:

set_colorStateTrue()
set_colorStateFalse()
set_colorState(_bool_)
set_true_color(str)
set_true_color(_qcolor_)
set_false_color(_str_)
set_false_color(_qcolor_)

Eigenschaften

Diese können in Stylesheets oder Python-Code festgelegt werden:

highlightPosition

Position des Indikators festlegen.

setColorState

Den Farbzustand des Indikators auswählen.

left_image_path
right_image_path
center_image_path
top_image_path
bottom_image_path

A file path or resource path to an image to display in the described button location.
If the reset button is pressed in Qt Designer editor property, the image will not be displayed (allowing optionally text).

left_text
right_text
center_text
top_text
bottom_text

A text string to be displayed in the described button location.
If left blank an image can be designated to be displayed.

true_color
false_color

Color selection for the center LED ring to be displayed, when the BASENAME.light.center HAL pin is True or False.

text_color

Auswahl der Farbe für den Text des Buttons.

button_font

Auswahl der Schriftart für den Text des Buttons.

Die obigen Eigenschaften könnten gesetzt werden in:

  • Stylesheets:
    You would usually use the Qt Designer widget name with # prefix to set individual widget properties, otherwise you would use the JoyPad class name to set all JoyPad widgets the same:

    #joypadname{
      qproperty-true_color: #000;
      qproperty-false_color: #444;
    }
  • In Python handler code:

    self.w.joypadename.setProperty('true_color','green')
    self.w.joypadename.setProperty('false_color','red')

4.3. WebWidget

This widget will create a html/pdf viewing page using the QtWebKit or QtWebEngine libraries. The newer QtWebEngine is preferred if both are on the system.
If the QtWebEngine library is used with the Qt Designer editor, a placeholder QWidget will show in Qesigner. This will be replaced with the QtWebEngine widget at run time.

5. BaseClass/Mixin-Widgets

These widgets are used to combine different properties and behaviours into other widgets.

Sie werden als ausklappbare Kopfzeile in der Eigenschaftsspalte von Qt Designer angezeigt.

5.1. IndicatedPushButtons

Diese Klasse verändert das Verhalten von QPushButton.

5.1.1. LED-Anzeige Option

indicator_option puts a LED on the top of the button.

QtVCP Drucktaste: Angezeigte Aktionstaste, LED-Anzeigeoption
Abbildung 24. QtVCP PushButton: Angezeigte Aktionstaste, LED-Anzeigeoption

Es kann ein Dreieck, Kreis, obere Leiste oder seitliche Leiste sein.
Die Größe und Position können angepasst werden.

Es wird angezeigt:

  • den aktuellen Zustand der Schaltfläche, oder

  • den Zustand eines HAL-Pins, oder

  • LinuxCNC status.

Eigenschaften

Diese Eigenschaften sind verfügbar, um den Indikator anzupassen (nicht alle sind auf jede LED-Form anwendbar):

on_color
off_color
indicator_size
circle_diameter
shape_option
right_edge_offset
top_edge_offset
height_fraction
width_fraction
corner_radius

Indicator corner radius.

Die Farbe der LED-Anzeige kann in einem stylesheet definiert werden, indem der folgende Code zur .qss-Datei hinzugefügt wird:

Indicated_PushButton{
  qproperty-on_color: #000;
  qproperty-off_color: #444;
}

Oder für einen bestimmten Button:

Indicated_PushButton #button_estop{
  qproperty-on_color: black;
  qproperty-off_color: yellow;
}
Optionen

IndicatedPushButton hat exklusive Optionen:

indicator_HAL_pin_option

Fügt ein halpin namens <buttonname>-led hinzu, der den Status der Schaltflächenanzeige steuert.

indicator_status_option

Lässt die LED den Status dieser wählbaren LinuxCNC-Status anzeigen:

  • Is Estopped

  • Is On

  • All Homed

  • Is Joint Homed

  • Idle

  • Paused

  • Flood

  • Mist (engl. Nebel)

  • Block Delete

  • Optionaler Stop

  • Manual

  • MDI

  • Auto

  • Spindle Stopped

  • Spindel vorwärts

  • Spindel rückwärts

  • On Limits

Einige indicator_status_options enthält eine Eigenschaft, die mit einem stylesheet verwendet werden kann, um die Farbe der Schaltfläche basierend auf dem Zustand der Eigenschaft in LinuxCNC zu ändern.
Derzeit sind diese Status-Eigenschaften können verwendet werden, um Auto-Stil Schaltflächen:

  • is_estopped_status schaltet die Eigenschaft isEstop um

  • is_on_status schaltet die Eigenschaft isStateOn um

  • is_manual_status, is_mdi_status, is_auto_status schalten die Eigenschaften isManual, isMDI, und isAuto um.

  • is_homed_status schaltet die Eigenschaft isAllHomed um

Hier ist ein Beispiel-Stylesheet-Eintrag, der den Hintergrund von Mode-Button-Widgets festlegt, wenn sich LinuxCNC in diesem Modus befindet:

ActionButton[isManual=true] {
    background: red;
}
ActionButton[isMdi=true] {
    background: blue;
}
ActionButton[isAuto=true] {
    background: green;
}

Here is how you specify a particular widget by its objectName in Qt Designer:

ActionButton #estop button [isEstopped=false] {
    color: yellow;
}

5.1.2. Aktiviert durch den LinuxCNC-Status

Oft, mit der Schaltfläche deaktiviert und aktiviert auf der Grundlage der Zustand der LinuxCNC Motion Controller ist notwendig.

Es gibt mehrere Eigenschaften, die zur Unterstützung ausgewählt werden können:

isAllHomedSentive
isOnSensitive
isIdleSensitive
isRunSensitive
isManSensitive
isMDISensitive
isAutoSensitive

Sie können mehrere Eigenschaften für kombinierte Anforderungen auswählen.

5.1.3. Text Changes On State

Choosing the checked_state_text_option allows a checkable button to change the text based on its checked state.

Es verwendet die folgenden Eigenschaften, um den Text für jeden Zustand anzugeben:

true_state_string
false_state_string

\\n wird in einen Zeilenumbruch umgewandelt.

Sie können diese in Stylesheets festlegen/ändern:

ActionButton #action_aux{
  qproperty-true_state_string: "Air\\nOn";
  qproperty-false_state_string: "Air\\nOff";
}

5.1.4. Call Python Commands On State

Die python_command_option ermöglicht es, kleine Schnipsel von Python-Code auf Knopfdruck auszuführen, ohne die Handler-Datei bearbeiten zu müssen. Es kann jedoch Funktionen in der Handler-Datei aufrufen.

Bei Verwendung der command_string-Eigenschaften.

true_python_cmd_string

Ein Python-Befehl, der aufgerufen wird, wenn der Button auf True umgeschaltet wird.

false_python_cmd_string

Ein Python-Befehl, der aufgerufen wird, wenn die Schaltfläche auf False umgeschaltet wird.

Besondere Wörter in Großbuchstaben geben Zugang zu den folgenden Informationen:

INSTANCE

Ermöglicht den Zugriff auf die Instanzen der Widgets und die Handler-Funktionen.
Z.B.: INSTANCE.my_handler_function_call(True)

ACTION

Ermöglicht den Zugriff auf die ACTION Bibliothek von QtVCP.
Z.B. ACTION.TOGGLE_FLOOD()

PROGRAM_LOADER

Ermöglicht den Zugriff auf die PROGRAM_LOADER Bibliothek von QtVCP.
Z.B., PROGRAM_LOADER.load_halshow()

HAL

Ermöglicht den Zugriff auf das Python-Modul von HAL.
Z.B.: HAL.set_p('motion.probe-input','1')

6. Import-Only Widgets

Diese Widgets sind normalerweise die Basisklasse Widget für andere QtVCP-Widgets.

Sie sind nicht direkt im Qt-Designer-Editor verfügbar, können aber importiert und manuell eingefügt werden.

Sie könnten auch unterklassifiziert werden, um ein ähnliches Widget mit neuen Funktionen zu erstellen.

6.1. Automatische Höhe

Widget zur Messung von zwei Höhen mit einer Sonde.
Für die Einrichtung.

6.2. G-Code Dienstprogramm

Widgets for performing common machining processes.

6.3. Facing

Slab or face a definable area with different strategies.

6.4. Loch-Kreis (engl. hole circle)

Drill multiple holes on a bolt hole circle.

6.5. Qt NGCGUI

QtVCP NGCGUI: Shown from QtDragon

QtVCP’s version of NGC subroutine selector (Shown as used in QtDragon).

6.5.1. INI-Einstellungen

LinuxCNC needs to know where to look to run the subroutines.
If the subroutine calls other subroutines or custom M codes, those paths must be added too.

[RS274NGC]
SUBROUTINE_PATH = ~/linuxcnc/nc_files/examples/ngcgui_lib:~/linuxcnc/nc_files/examples/ngcgui_lib/utilitysubs

QtVCP needs to know where to open subroutines from.
You can also specify subroutines to be pre-opened in tabs.

[DISPLAY]
# NGCGUI subroutine path.
# This path must also be in [RS274NGC] SUBROUTINE_PATH
NGCGUI_SUBFILE_PATH = ~/linuxcnc/nc_files/examples/ngcgui_lib
# pre selected programs tabs
# specify filenames only, files must be in the NGCGUI_SUBFILE_PATH
NGCGUI_SUBFILE = slot.ngc
NGCGUI_SUBFILE = qpocket.ngc

6.5.2. Buttons

  • NEW TAB - add new blank tab to NGCGUI

  • SELECT PREAMBLE - select a file that add preamble G-code

  • SELECT SUBFILE - select a NGCGUI subroutine file

  • SELECT POST - select a file that add post G-code

  • REREAD FILE - reload the subroutine file

  • CREATE FEATURE - add feature to the list

  • RESTART FEATURE - remove all features from the list

  • FINALIZE GCODE - create the full G-code and send it to LinuxCNC/a file

6.5.3. Adding Custom Subroutines

You can create your own subroutines for use with NGCGUI. They must follow these rules:

  • Um ein Unterprogramm für die Verwendung mit NGCGUI zu erstellen, müssen der Dateiname und der Name des Unterprogramms identisch sein.

  • The subroutine must be in a folder within LinuxCNC’s INI designated search path.

  • On the first line there may be a comment of type info:

  • The subroutine must be surrounded by the sub and endsub tags.

  • Die verwendeten Variablen müssen nummerierte Variablen sein und dürfen keine Nummer überspringen.

  • Kommentare und Voreinstellungen können enthalten sein.

  • If an image file of the same name is in the folder, it will be shown.

(info: feedrate -- simple example for setting feedrate)
o<feedrate> sub
    #<feedrate>       = #1 (= 6 Feed Rate) ; comments in brackets will be shown in ngcui
    f#<feedrate>
o<feedrate> endsub
QtVCP NGCGUI Custom Sub

6.6. Qt PDF

Ermöglicht das Hinzufügen von ladbaren PDFs zu einem Bildschirm.

6.7. Qt Vismach

Verwenden Sie dies, um OpenGl simulierte Maschinen zu erstellen/hinzuzufügen.