Qtscreen використовує QtVCP віджети для інтеграції з LinuxCNC.

Віджет — це загальна назва для об’єктів інтерфейсу, таких як кнопки та мітки в PyQt.

Ви можете вільно використовувати будь-які доступні віджети за замовчуванням у редакторі Qt Designer.

Також існують спеціальні віджети, створені для LinuxCNC, які спрощують інтеграцію. Вони розділені на дві частини, розташовані у правій частині редактора:

  • Один призначений для віджетів лише HAL.

  • Інший призначений для віджетів керування CNC.

Ви можете вільно змішувати їх будь-яким чином на своїй панелі.

Note
Цей опис властивостей віджетів може легко застаріти через подальший розвиток та брак людей, які б писали документацію (хороший спосіб віддячити проекту). Остаточні описи можна знайти в source code.

1. Віджети лише для HAL

Ці віджети зазвичай мають HAL-піни та не реагують на контролер машини.

1.1. CheckBox Віджет

Цей віджет дозволяє користувачеві встановити прапорець, щоб встановити значення HAL pin у значення «true» або «false».

Він базується на QCheckButton PyQt.

1.2. DetachTabWidget - Віджет контейнера зі знімними користувачем панелями

Цей контейнерний віджет працює так само, як QTabWidget — він відображає кілька панелей по черзі з вкладками для вибору.
Якщо двічі клацнути вкладку або перетягнути її, вона від’єднається від головного вікна.
Коли вкладка від’єднана, її вміст розміщується в QDialog.
Вкладку можна знову приєднати, закривши діалогове вікно або двічі клацнувши на її рамці.

Він базується на QTabWidget від PyQt.

1.3. DoubleScale - Віджет введення кнопки спінінга

Цей віджет — віджет введення за допомогою кнопки обертання, який використовується для встановлення s32 та float HAL-піну.

Він має внутрішній коефіцієнт масштабування, встановлений за замовчуванням на 1, який можна встановити програмно або за допомогою QtSignal.

Слот setInput може бути підключений до цілочисельного або плаваючого сигналу.

[HALLabelName].setInput(some_value)

Це виклик функції для зміни внутрішнього коефіцієнта масштабування.

Виводи HAL будуть встановлені на значення внутрішньої шкали, помножене на значення, що відображається віджетом.

1.4. FocusOverlay - Віджет накладання фокуса

Цей віджет розміщує кольорове накладання на екран, зазвичай під час відображення діалогового вікна.

Накладання фокуса QtVCP
Figure 1. Приклад накладання фокуса для підтвердження закриття

Використовується для створення відчуття «зосередженості» та привернення уваги до важливої інформації.

Він також може відображати напівпрозоре зображення.
Він також може відображати текст повідомлення та кнопки.

Цим віджетом _можна керувати за допомогою повідомлень STATUS.

1.5. Gauge - Віджет круглого циферблатного індикатора

QtVCP `Gauge`: Віджет круглого циферблатного індикатора
Figure 2. QtVCP Gauge: Віджет круглого циферблатного індикатора

Круглий калібр можна використовувати в графічному інтерфейсі LinuxCNC для відображення вхідного параметра на циферблаті.

Налаштовувані параметри

Існує кілька властивостей, які користувач може налаштувати, щоб налаштувати зовнішній вигляд датчика.

Наступні параметри можна встановити або програмно, або через редактор властивостей Qt Designer.

halpin_option

Встановлення цього значення на True створить 2 виводи HAL:

  • Один призначений для встановлення вхідного значення value

  • Інший призначений для встановлення «заданої точки».

Якщо цей параметр не встановлено, то value та setpoint мають бути пов’язані програмно, тобто у файлі обробника.

max_reading

Це значення визначає найбільше число, що відображається на поверхні калібру.

max_value

Це максимальне очікуване значення вхідного сигналу.
Іншими словами, це повний діапазон вхідних значень.

num_ticks

Це кількість позначок/показників індикатора на циферблаті індикатора.
Слід встановити число, яке забезпечує читабельність текстових показників навколо циферблата індикатора.
Мінімальне дозволене значення – 2.

zone1_color

Зона 1 простягається від максимального значення до порогової точки.
Її можна встановити на будь-який колір RGB.

zone2_color

Зона2 простягається від порогової точки до мінімального значення, яке дорівнює 0.
Їй можна встановити будь-який колір RGB.

bezel_color

Це колір зовнішнього кільця калібру.

bezel_width

Це ширина зовнішнього кільця калібру.

поріг

Поріг є точкою переходу між зонами.
Його слід встановити на значення від 0 до максимального значення.
Максимально допустиме значення встановлюється на max_value датчика, а мінімальне значення дорівнює 0.

gauge_label

Це текст під зчитуванням значення, біля нижньої частини індикатора.
Тоді функція індикатора легко видима.

base_color

Колір калібру.

base_gradient_color

Колір підсвічування датчика.

center_color

Колір центру калібру.

center_gradient_color

Колір підсвічування центру датчика.

Неналаштовувані параметри

Є 2 входи, які не можна налаштувати. Їх можна встановити через виводи HAL, програмно або за допомогою сигналів з інших віджетів:

значення

Це фактичне вхідне значення, яке буде відображатися разом зі стрілкою манометра та на цифровому індикаторі.
Його необхідно встановити на значення від 0 до максимального значення max_value.

задане значення

Це значення, яке визначає розташування маленького маркера на поверхні калібру. Його необхідно встановити на значення від 0 до максимального значення.

1.6. GeneralHALInput - Віджет підключення вхідних сигналів/слотів

Цей віджет використовується для підключення довільного віджета Qt до HAL за допомогою сигналів/слотів.

Використовується для віджетів, які повинні реагувати на зміни пінів HAL.

1.7. GeneralHALOutput - Загальні сигнали/слоти Віджет підключення виходу

Цей віджет використовується для підключення довільного віджета Qt до HAL за допомогою сигналів/слотів.

Він використовується для віджетів, які повинні керувати пінами HAL.

1.8. GridLayout - Віджет макета сітки

Цей віджет керує тим, чи віджети всередині нього ввімкнені чи вимкнені.

Вимкнені віджети зазвичай мають інший колір і не реагують на дії.

Він базується на QGridLayout від PyQt.

1.9. HalBar - Індикатор рівня HAL Bar

QtVCP HalBar: Панель, що показує два варіанти індикатора рівня HAL Bar
Figure 3. QtVCP HalBar: панель, що демонструє індикатор рівня HAL Bar

Цей віджет використовується для індикації рівня або значення, зазвичай для виводу HAL s32/float.
Ви також можете вимкнути вивод HAL та використовувати сигнали Qt або команди Python для зміни рівня.

1.9.1. Властивості бару

HalBar є підкласом віджета Bar, тому він успадковує такі властивості:

  • stepColorList: список кольорових рядків, кількість кольорів визначає кількість стовпців.

  • backgroundColor: визначення QColor кольору фону.

  • indicatorColor: визначення QColor для додаткової одноколірної шкали поточного значення.

  • useMultiColorIndicator: Булевий перемикач для вибору опції одноколірної або багатоколірної шкали значень.

  • split: цілочисельний відсотковий поділ смужки максимального значення відносно смужки поточного значення (від 0 до 50%).

  • setVertical: перемикач bool для вибору вертикального або горизонтального індикатора.

  • setInverted: логічний перемикач для вибору інвертованого напрямку.

  • setMaximum: ціле число, яке визначає максимальний рівень індикації.

  • setMinimum: ціле число, яке визначає найнижчий рівень індикації.

1.9.2. Властивості HalBar

  • pinType: щоб вибрати тип контактів HAL:

    • NONE PIN-код HAL не буде додано

    • S32 Буде додано цілочисельний пін S32

    • FLOAT Буде додано плаваючий штифт

  • pinName: щоб змінити назву виводу HAL, інакше використовується базова назва віджета.

1.9.3. Таблиці стилів HalBar

Вищезазначені властивості Bar можна встановити в таблицях стилів.
Властивості pinType та pinName не можна змінювати в таблицях стилів.

Note
У таблицях стилів stepColorList — це один рядок назв кольорів, розділених комами.
HalBar{
    qproperty-backgroundColor: #000;
    qproperty-stepColorList: 'green,green,#00b600,#00b600,#00d600,#00d600,yellow,yellow,red,red';
}

1.10. HALPad - Кнопки HAL Джойстик

QtVCP HALPad: Кнопки HAL Джойстик
Figure 4. QtVCP HALPad: Кнопки HAL Джойстик

Цей віджет виглядає та працює як 5-кнопковий D-pad зі світлодіодним кільцем.

Кожна кнопка має вивід HAL одного типу (біт, S32 або число з плаваючою комою), який можна вибрати.

Центральне кільце світлодіода має вибір кольорів для ввімкнення та вимкнення та керується бітовим виводом HAL.

HALPad ENUMS

Використовуються перелічені константи:

  • Щоб посилатися на положення індикаторів:

    • НІЧОГО

    • ЛІВОРУЧ

    • ПРАВОРУЧ

    • ЦЕНТР

    • ВЕРХ

    • ВНИЗ

    • ЛІВОРУЧПРАВОРУЧ

    • ЗВЕРХВНИЗ

  • Для типів контактів HAL:

    • НІЧОГО

    • БІТ

    • S32

    • FLOAT

Ви використовуєте назву віджета в Qt Designer плюс константу посилання:

self.w.halpadname.set_highlight(self.w.halpadname.LEFTRIGHT)
HALPad Властивості
pin_name

Необов’язкова назва для базової назви пінів HAL. Якщо залишити поле порожнім, буде використано назву віджета Qt Designer.

pin_type

Виберіть тип вихідного виводу HAL. Ця властивість використовується лише під час запуску. Вибір можна встановити в Qt Designer:

  • НІЧОГО

  • БІТ

  • S32

  • FLOAT

left_image_path
right_image_path
center_image_path
top_image_path
bottom_image_path

Шлях до файлу або ресурсу зображення, яке потрібно відобразити в описаному місці розташування кнопки.
Якщо натиснути кнопку скидання у властивості редактора Qt Designer, зображення не відображатиметься (дозволяючи додатковий текст).

left_text
right_text
center_text
top_text
bottom_text

Текстовий рядок, який буде відображено в описаному місці кнопки.
Якщо залишити поле порожнім, можна призначити зображення для відображення.

true_color
false_color

Вибір кольору для центрального світлодіодного кільця, яке відображатиметься, коли вивід HAL <BASENAME>.light.center має значення True або False.

text_color

Вибір кольору для тексту кнопки.

text_font

Вибір шрифту для тексту кнопки.

HALPad Стилі

Вищезазначені властивості можна встановити в стилях.

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

1.11. HALLabel - Віджет міток HAL

Цей віджет відображає значення, надіслані йому.

Значення можна надсилати з:

  • HAL-піни
    Вхідний пін можна вибрати як бітовий, S32, Float або взагалі не вибрати пін

  • Програмно

  • A QtSignal

Існує властивість textTemplate для встановлення форматованого тексту та/або форматування тексту.
Базове форматування може бути:

  • %r для логічних значень

  • %d для цілих чисел

  • %0.4f для чисел з плаваючою комою.

Приклад форматованого тексту може бути таким:

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>
"""
)

Слот setDisplay може бути підключений до цілочисельного, числа з плаваючою комою або булевого сигналу.

Якщо властивість pin_name не встановлена, буде використано назву віджета.

Існують виклики функцій для відображення значень:

[HALLabelName].setDisplay(some_value)

Може використовуватися для налаштування дисплея, якщо не вибрано жодного контакту HAL.

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

Встановлює шаблон відображення.

Він базується на QLabel PyQt.

1.12. LCDNumber - Віджет зчитування номерів у стилі РК-дисплея

Цей віджет відображає значення HAL з плаваючою комою/s32/біт у вигляді РК-дисплея.

Він може відображати числа у десятковому, шістнадцятковому, двійковому та вісімковому форматах, встановивши властивість mode.

Під час використання чисел з плаваючою комою ви можете встановити рядок форматування.

Ви повинні встановити властивість digitCount у відповідне значення, щоб відобразити найбільше число.

Властивості
pin_name

Рядок опцій, який буде використовуватися як назва виводу HAL.
Якщо встановлено значення порожнього рядка, буде використано назву віджета.

bit_pin_type

Вибирає вхідний контакт типу BIT.

s32_pin_type

Вибирає вхідний контакт типу S32.

float_pin_type

Виберіть тип вхідного контакту FLOAT.

floatTemplate

Строка, яка буде використовуватися як шаблон формату Python3 для налаштування LCD-дисплея.
Використовується тільки при виборі виводу FLOAT, наприклад, {:.2f} відображатиме число з плаваючою комою, округлене до 2 цифр після десяткової крапки.
Порожнє поле дозволить десятковій крапці переміщатися за необхідністю.

Він базується на QLCDNumber PyQt.

1.13. LED - Віджет індикатора

QtVCP LED: Віджет світлодіодного індикатора
Figure 5. QtVCP LED: Віджет світлодіодного індикатора

Індикатор, подібний до світлодіода, який за бажанням відповідає логіці виводу HAL.

halpin_option

Вибирає, чи світлодіод відображає стан вхідного виводу HAL або програми.

diameter

Діаметр світлодіода (за замовчуванням 15).

color

Колір світлодіода, коли він увімкнений (за замовчуванням зелений).

off_color

Колір світлодіода у вимкненому стані (за замовчуванням чорний).

gradient

вмикає або вимикає градієнтне підсвічування (за замовчуванням увімкнено).

on_gradient_color

Колір підсвічування світлодіода, коли він увімкнений (за замовчуванням білий).

off_gradient_color

Колір підсвічування світлодіода, коли він вимкнений (за замовчуванням білий).

вирівнювання

Підказка щодо вирівнювання Qt.

стан

Поточний стан світлодіода

миготливий

Вмикає та вимикає опцію миготіння.

Швидкість спалаху

Встановлює частоту спалахів.

Властивості LED можна визначити в stylesheet за допомогою наступного коду, доданого до файлу .qss, де name_of_led – це назва віджета, визначена в редакторі Qt Designer:

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

1.14. PushButton - Віджет перемикання закріплення HAL

Цей віджет дозволяє користувачеві встановити значення HAL pin на true або false одним натисканням кнопки.

Як варіант, це може бути кнопка-перемикач.

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

Також має інші опції.

Він базується на QPushButton PyQt.

1.15. RadioButton Віджет

Цей віджет дозволяє користувачеві встановлювати значення пінів HAL на значення true або false. Лише один віджет RadioButton групи може мати значення true одночасно.

Він базується на QRadioButton від PyQt.

1.16. Slider - Віджет налаштування значення HAL Pin

Дозволяє налаштувати значення виводу HAL за допомогою ковзного вказівника.

1.17. TabWidget - Віджет вкладки

Цей віджет дозволяє налаштовувати висоту вкладок за допомогою таблиць стилів.

Властивості TabWidget можна визначити в stylesheet, додавши наступний код до файлу .qss.
name_of_tab — це ім’я віджета, визначене в редакторі Qt Designer.
Якщо ви пропустите текст «#name_of_tab», буде встановлено висоту всіх вкладок TabWidgets.
Це показує, як встановити висоту вкладки певного віджета:

TabWidget #name_of_tab{
  qproperty-tabsize: 1.5;
}

Він базується на QTabWidget від PyQt.

1.18. WidgetSwitcher - Віджет перемикача режимів перегляду макета кількох віджетів

Це використовується для перемикання вигляду макета з кількома віджетами на відображення лише одного віджета, тобто для перемикання між великим виглядом віджета та меншим виглядом кількох віджетів.

Він відрізняється від стекового віджета тим, що може витягувати віджет з будь-якої точки екрана та розміщувати його на своїй сторінці з іншим макетом, ніж той, що був спочатку.

Щоб перемикач міг повернути оригінальний віджет, він має бути в макеті.

У Qt Designer ви будете:

  • Додайте на екран віджет WidgetSwitcher.

  • Клацніть правою кнопкою миші на WidgetSwitcher та додайте сторінку.

  • Заповніть його віджетами/макетами, які ви хочете бачити у формі за замовчуванням.

  • Додайте стільки сторінок, скільки є подань для переходу.

  • На кожній сторінці додайте віджет макета.
    Після додавання макета потрібно знову клацнути правою кнопкою миші на перемикачі віджетів і встановити параметр макета.

  • Клацніть на віджеті WidgetSwitcher, а потім прокрутіть униз редактора властивостей.

  • Знайдіть динамічну властивість widget_list та двічі клацніть праворуч від неї.

  • З’явиться діалогове вікно, яке дозволить вам додати назви віджетів для переміщення на сторінки, додані до WidgetSwitcher.

Існують виклики функцій для відображення певних віджетів.
Викликаючи одну з цих функцій, ви контролюєте, який віджет відображається на даний момент:

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

Це показує макет сторінка 0, а всі інші віджети повертаються до початкового стану, коли вони були створені в Qt Designer.

[_WidgetSwitcherName_].show_next()

Показати наступний віджет.

Він базується на віджеті QStack.

1.19. XEmbed - Віджет вбудовування програм

Дозволяє вбудувати програму у віджет.

Працюватимуть лише програми, що використовують протокол xembed, такі як:

  • Віртуальні панелі керування GladeVCP

  • Вбудована віртуальна клавіатура

  • Віртуальні панелі керування QtVCP

  • відеоплеєр mplayer

2. Віджети контролера машини

Ці віджети взаємодіють зі станом контролера машини.

2.1. ActionButton - Віджет керування діями контролера машини

Ці кнопки використовуються для керування діями на контролері машини.

Вони побудовані на базі IndicatedPushButton, тому можуть мати світлодіоди, що накладаються один на одного.

Note
Якщо ви залишили подвійний клік на цьому віджеті, ви можете запустити діалогове вікно для налаштування будь-якої з цих дій. Діалогові вікна допоможуть налаштувати правильні дані, пов’язані з вибраною дією. Ви також можете змінити ці властивості безпосередньо в редакторі властивостей.
Дії

Ви можете вибрати один із цих:

Estop
Машина ввімкнена
Авто
mdi
ручний
run
run_from_line статус

Отримує номер рядка з повідомлення STATUS gcode-line-selected.

run_from_line слот

Отримує номер рядка з Qt Designer int/str slot setRunFromLine.

abort
pause
завантажити діалогове вікно

Потрібно наявність віджета діалогового вікна.

Діалогове вікно перегляду камери

Потрібна наявність віджета діалогового вікна camview.

діалогове вікно зміщення походження

Потрібно наявність віджета діалогового вікна зміщення походження.

діалогове вікно макросу

Потрібна наявність віджета діалогового вікна макросів.

Запуск Халметра
Стан запуску
Запуск Halshow
Головна сторінка

Встановіть номер суглоба на -1 для all-home.

Ви бездомні

Встановіть номер суглоба на -1 для all-unhome.

Вибрано для дому

Встановлює опорну точку для з’єднання/вісі, вибраної за допомогою STATUS.

Вибрано

Знімає з початкового положення з’єднання/вісь, вибрану за допомогою STATUS.

нульова вісь
нуль G5X

Обнуляє поточні зміщення системи координат користувача.

нуль G92

Обнуляє додаткові зміщення G92.

нульовий поворотний момент Z

Обнуляє зміщення обертання.

позитивний суглоб підтюпцем

Встановіть номер суглоба.

поштовховий суглоб негативний

Встановіть номер суглоба.

пробіжка вибрана позитивною

Вибрано за допомогою іншого віджета або СТАТУСУ.

поштовх вибрано негативне

Вибрано за допомогою іншого віджета або СТАТУСУ.

приріст поштовху

Встановіть метричні/імперські/кутові числа.

швидкість штовхання

Встановіть число з плаваючою комою/альтернативне число з плаваючою комою.

перевизначення каналу

Встановіть число з плаваючою комою/альтернативне число з плаваючою комою.

швидке перевизначення

Встановіть число з плаваючою комою/альтернативне число з плаваючою комою.

корекція шпинделя

Встановіть число з плаваючою комою/альтернативне число з плаваючою комою.

шпиндель вперед
шпиндель назад
зупинка шпинделя
шпиндель вгору
шпиндель вниз
зміна перегляду

Набір view_type_string.

обмеження перевизначення
повінь
mist
видалення блоку
необов'язкова зупинка
команда mdi

Встановлює command_string, тобто викликає жорстко закодовану MDI-команду

ЦЕ номер MDI

Встановлює ini_mdi_number, тобто викликає MDI-команду на основі INI

дро абсолют
родич дро
dro dtg
екран виходу

Закриває LinuxCNC

Замінити обмеження

Тимчасово змінити жорсткі обмеження

діалогові вікна запуску

Відкриває діалогові вікна, якщо вони включені до файлу інтерфейсу користувача.

встановити DRO на відносний
встановити DRO на абсолютне значення
встановити DRO на відстань, що залишилася

Атрибути

Ці встановлюють атрибути вибраної дії (доступність залежить від віджета):

перемикання опції плаваючої точки

Дозволяє перемикатися між двома швидкостями за допомогою кнопок джогінгу та коригування.

спільний номер

Вибирає з’єднання/вісь, якою керує кнопка.

збільшення імперського числа

Встановлює приріст імперської шкали (встановіть від’ємне значення, щоб ігнорувати).

число мм

Встановлює приріст метричної похибки (встановіть від’ємне значення, щоб ігнорувати).

приріст кутового числа

Встановлює приріст кутового повороту (встановлює від’ємне значення для ігнорування).

число з комою

Використовується для jograte та перевизначень.

альтернативне число з плаваючою комою

Для jograte та перевизначень, які можуть перемикатися між двома числами з комою.

рядок типу перегляду

Може бути:

  • p,

  • x, y, y2, z, z2,

  • збільшення масштабу, зменшення масштабу,

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

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

  • clear.

рядок команди

Рядок команди MDI, який буде викликано, якщо вибрано дію команди MDI.

ini_mdi_number

(Старий спосіб)
Посилання на розділ INI файлу [MDI_COMMAND_LIST].
Встановіть ціле число, вибравши один рядок під рядком INI [MDI_COMMAND], починаючи з 0.
Потім у файлі INI під заголовком [MDI_COMMAND_LIST] додайте відповідні рядки.
Команди, розділені символом ;, будуть виконуватися одна за одною.
Текст мітки кнопки можна встановити будь-яким текстом після коми, символ \n додає розрив рядка.

ini_mdi_key

(бажаний спосіб)
Посилання на розділ INI файлу [MDI_COMMAND_LIST].
Цей рядок буде додано до MDI_COMMAND_, щоб сформувати запис для пошуку
у файлі INI під заголовком [MDI_COMMAND_LIST].
Команди, розділені символом ;, будуть виконуватися одна за одною
Текст мітки кнопки можна встановити будь-яким текстом після коми, символ \n додає розрив рядка.

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

Кнопки дій є підкласами [sub:qtvcp:widgets:indicatedpushbutton][IndicatedPushButton]. Див. наступні розділи для отримання додаткової інформації про:

2.2. ActionToolButton - Віджет кнопки меню додаткових дій

Кнопки ActionToolButton за своєю концепцією схожі на кнопки дій, але вони використовують QToolButtons, щоб дозволити вибирати опціональні дії шляхом натискання і утримання кнопки до появи меню опцій.

Наразі є лише один варіант: userView.

Він базується на QToolButton PyQt.

userView Віджет запису та налаштування перегляду користувача

Кнопка інструмента «Вигляд користувача» дозволяє записувати та повертатися до довільного графічного вигляду.

Натисніть і утримуйте кнопку, щоб з’явилося меню, і натисніть запис перегляду, щоб записати поточний графічний вигляд.

Натисніть кнопку звичайним способом, щоб повернутися до останньої записаної позиції.

Записана позиція буде запам’ятана під час вимкнення, якщо налаштовано опцію файлу налаштувань.

Note
Через обмеження програмування записане положення може не відображатися точно так само. Особливо, якщо ви зменшили масштаб і знову збільшили його під час налаштування бажаного виду.
Найкращий спосіб — вибрати основний вид, змінити його за бажанням, записати, а потім одразу натиснути кнопку, щоб перейти до записаного положення. Якщо воно вам не подобається, змініть його поточне положення і запишіть знову.

2.3. AxisToolButton - Віджет «Вибрати та встановити осі»

Це дозволяє вибрати та встановити вісь.

Якщо кнопку встановлено як прапорець, вона вказуватиме на вибрану вісь.

Якщо натиснути та утримувати кнопку, з’явиться спливаюче меню, яке дозволить:

  • Обнулення осі

  • Поділіть вісь на 2

  • Встановіть вісь довільно

  • Скинути значення осі до останнього записаного числа

Ви повинні вибрати віджет діалогового вікна введення, який відповідає dialog_code_string, зазвичай це вибирається з віджета screenOptions.

halpin_option

Встановить вивід HAL у значення "true" (істина), коли вісь вибрано.

joint_number

Слід встановити відповідний номер суглоба.

axis_letter

Слід встановити відповідну літеру осі.

Ось властивості меню, що активується за допомогою функції «клацання та утримання»:

showLast

Показати дію «Встановити на останній».

showDivide

Покажіть дію «Поділити на 2».

showGotoOrigin

Показати дію «Перейти до початку координат G53/G5x».

showZeroOrigin

Покажіть дію «Нульове походження».

showSetOrigin

Показати дію «Встановити походження».

dialog_code_string

Встановлює, яке діалогове вікно з’являтиметься для числового введення, наприклад, «ВВЕДЕННЯ» або «КАЛЬКУЛЯТОР», щоб викликати діалогове вікно введення лише за допомогою друку або діалогове вікно введення за допомогою сенсорного/друкованого калькулятора.

Ось зразок запису в таблиці стилів:

AxisToolButton {
    /* Змінити всі параметри меню */
    qproperty-showLast: false;
    qproperty-showDivide : true;
    qproperty-showGotoOrigin: true;
    qproperty-showZeroOrigin: true;
    qproperty-showSetOrigin: false;
    qproperty-dialog_code_string: CALCULATOR;
}

Він базується на QToolButton PyQt.

2.4. BasicProbe - Простий віджет зондування фрезерування

QtVCP BasicProbe: Простий віджет зондування фрезерування
Figure 6. QtVCP BasicProbe: Простий віджет зондування фрезерування

Віджет для зондування на фрезерному верстаті. Використовується екраном QtDragon.

2.5. CamView - Віджет вирівнювання заготовки та налаштування початку координат

Цей віджет відображає зображення з веб-камери.

Він накладає регульовану круглу мішень та перехрестя на зображення.

CamView був створений з урахуванням точного візуального позиціонування.

Це використовується для вирівнювання елементів заготовки або нульової деталі за допомогою веб-камери.

Він використовує бібліотеку візуального мистецтва OpenCV.

2.6. DROLabel - Віджет відображення положення осі

Це відобразить поточне положення осі.
Ви також можете натиснути на підпис і переглянути список дій.

Qjoint_number

Номер індексу суглоба (X=0, Y=1) зміщення для відображення (10 вказуватиме обертальне зміщення).

Qreference_type

Фактична, відносна або відстань, що залишилася (0,1,2).

metric_template

Формат відображення, наприклад %10.3f.

imperial_template

формат відображення, наприклад %9.4f.

angular_template

Формат відображення, наприклад %Rotational: 10.1f.

always_display_diameter

Перемикає опцію відображення

always_display_radius

Перемикає опцію відображення

display_as_per_m7m8

Перемикає опцію відображення. Буде дотримуватися поточного режиму M7/8.

follow_reference_changes

Перемикає опцію відображення. Відповідатиме режиму довідки про повідомлення СТАН, тобто ви можете використовувати кнопки дій, щоб налаштувати, як воно наразі відображається.

Ось опції меню, що відкриваються при натисканні:

showLast

Показати дію «Встановити на останній».

showDivide

Покажіть дію «Поділити на 2».

showGotoOrigin

Показати дію «Перейти до початку координат G53/G5x».

showZeroOrigin

Покажіть дію «Нульове походження».

showSetOrigin

Показати дію «Встановити походження».

dialogName

Встановлює, яке діалогове вікно з’явиться для числового введення, тобто ВВЕДЕННЯ чи КАЛЬКУЛЯТОР.

Віджет DROLabel містить властивість isHomed, яку можна використовувати зі стилями для зміни кольору DRO_Label на основі стану відправлення номера з’єднання в LinuxCNC.

Ось зразок запису таблиці стилів, який:

  • Встановлює шрифт усіх віджетів DRO_Label

  • Встановлює текстовий шаблон (для встановлення роздільної здатності) цифрового індикатора (DRO)

  • Потім встановлює колір тексту на основі властивості Qt isHomed.

  • показати всі опції меню.

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

    /* Змінити всі параметри меню */
    qproperty-showLast: true;
    qproperty-showDivide : true;
    qproperty-showGotoOrigin: true;
    qproperty-showZeroOrigin: true;
    qproperty-showSetOrigin: true;
    qproperty-dialogName: CALCULATOR;
}

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

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

Ось як вказати певний віджет за його objectName у Qt Designer:

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

Він базується на QLabel PyQt.

2.7. FileManager - Віджет вибору завантаження файлів

QtVCP FileManager: Віджет вибору завантаження файлів
Figure 7. QtVCP FileManager: Віджет вибору завантаження файлів

Цей віджет використовується для вибору файлів для завантаження.

Він має можливість прокручувати назви за допомогою обладнання, такого як MPG.

Можна налаштувати завантаження файлів за допомогою класу-патчу функції load(self,fname).

Функція getCurrentSelected() поверне кортеж Python, що містить шлях до файлу та інформацію про те, чи є це файлом.

temp = FILEMANAGER.getCurrentSelected()
print('filepath={}'.format(temp[0]))
if temp[1]:
    print('Is a file')
Властивості таблиць стилів
doubleClickSelection (bool)

Визначає, чи потрібно двічі клацнути на папці.
Одноразове клацання на папці (False) увімкнено за замовчуванням і призначено для користувачів сенсорних екранів.
Нижче наведено приклад налаштування цієї властивості:

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

Визначає, чи слід відображати структуру файлів/папок у формі списку.
Табличний вигляд (False) увімкнено за замовчуванням.
Нижче наведено приклад того, як встановити цю властивість:

#filemanager {
    qproperty-showListView: True;
}

Він базується на FIXME від PyQt

2.8. GcodeDisplay - Віджет відображення тексту G-коду

Це відображає G-код у текстовому вигляді, виділяючи поточний рядок.

Це також може відображати:

  • Історія MDI, коли LinuxCNC перебуває в режимі MDI.

  • Записи журналу, коли LinuxCNC перебуває в режимі MANUAL.

  • Записи файлу налаштувань, якщо ви введете PREFERENCE великими літерами у віджет MDILine.

Він має signal percentDone(int), який можна підключити до слота (наприклад, progressBar для відображення відсотка виконання).

auto_show_mdi_status

Встановіть значення «true», щоб віджет перемикався на історію MDI, коли він у режимі MDI.

auto_show_manual_status

Встановіть значення «true», щоб віджет перемикався в режим машинного журналу в ручному режимі.

Властивості GcodeDisplay можна встановити в таблиці стилів за допомогою наступного коду, доданого до файлу .qss (наступні варіанти кольорів є випадковими).

EditorBase{
    qproperty-styleColorBackground: lightblue;
    qproperty-styleColorCursor:white;
    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";
}

Для лексера G-коду за замовчуванням віджета GcodeDisplay:

  • styleColor0 = За замовчуванням: Все, що не входить до груп нижче

  • styleColor1 = Номер рядка та коментарі: Nxxx та коментарі (символи всередині та включно з () або будь-що після ; (якщо використовується поза дужками), за винятком примітки нижче)

  • styleColor2 = G-код: G та цифри після нього

  • styleColor3 = M-код: M та цифри після нього

  • styleColor4 = Axis: XYZABCUVW

  • styleColor5 = Інше: EFHIJKDQLRPST (подача, об/хв, радіус тощо)

  • styleColor6 = AxisValue: Значення після XYZABCUVW

  • styleColor7 = OtherValue: Значення, що відповідають EFHIJKDQLRPST$

Note
Для коментарів колір «OtherValue» (колір 5) можна використовувати для виділення «print», «debug», «msg», «logopen», «logappend», «logclose», «log», «pyrun», «pyreload», «abort», «probeopen», «probeclose» всередині коментаря в дужках у рядку G-коду. А також «py», якщо рядок починається з «;py,». Приклади: (print, text), (log, text), (msg, text) або (debug, text). Якщо в одному рядку є кілька прикладів, виділятиметься лише останній.

Визначення шрифтів:

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

Він базується на QsciScintilla PyQt.

2.9. GcodeEditor - Віджет редактора G-кодів програм

Це розширення віджета GcodeDisplay, яке додає зручності редагування.

Він базується на QWidget PyQt, який містить віджет GcodeDisplay.

2.10. GCodeGraphics - Віджет графічного фону G-коду

QtVCP GcodeGraphics: Віджет графічного фону G-коду
Figure 8. QtVCP GcodeGraphics: Віджет графічного фону G-коду

Це відображає поточний G-код у графічному вигляді.

Властивості таблиць стилів
dro-font/dro-large-font (string)

Встановлює властивості шрифту DRO для малого та великого форматів.
Тут ми посилаємося на базову назву віджета; GCodeGraphics

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

Встановлює стандартну орієнтацію перегляду під час завантаження графічного інтерфейсу користувача.
Для токарного верстата допустимими варіантами є p, y, y2. Для інших екранів допустимими варіантами є p, x, y, z, z2.
Нижче наведено приклад того, як встановити цю властивість (з посиланням на ім’я, вибране користувачем віджета):

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

Визначає, чи показувати DRO.
Нижче наведено приклад того, як встановити цю властивість:

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

Визначте, чи показувати відстань, що залишилася.
Нижче наведено приклад того, як встановити цю властивість:

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

Визначає, чи відображати одиниці вимірювання в метричній системі за замовчуванням.
Нижче наведено приклад того, як встановити цю властивість:

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

Визначає, чи показувати накладання за замовчуванням.
Нижче наведено приклад того, як встановити цю властивість:

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

Визначає, чи відображати зміщення за замовчуванням.
Нижче наведено приклад того, як встановити цю властивість:

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

Визначає, чи показувати малий початок координат за замовчуванням.
Нижче наведено приклад того, як встановити цю властивість:

#gcodegraphics{
    qproperty-_small_origin: False;
}
overlay_color (основний, вторинний або колір у форматі RGBA)

Встановлює колір накладання за замовчуванням.
Нижче наведено приклад того, як встановити цю властивість:

#gcodegraphics{
    qproperty-overlay_color: blue;
}
overlay_alpha (float)

Встановлює значення альфа-відображення накладання за замовчуванням. Це впливає на непрозорість накладання, якщо встановлено значення від 0.0 до 1.0.
Нижче наведено приклад того, як встановити цю властивість:

#gcodegraphics{
    qproperty-overlay_alpha: 0.15;
}
background_color (основний, вторинний або колір у форматі RGBA)

Встановлює колір фону за замовчуванням.
Нижче наведено приклад того, як встановити цю властивість:

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

Визначає, чи використовувати градієнтний фон за замовчуванням.
Нижче наведено приклад того, як встановити цю властивість:

#gcodegraphics{
    qproperty-_use_gradient_background: False;
}
jog_color (основний, вторинний або колір у форматі RGBA)

Встановлює колір штрихування за замовчуванням.
Нижче наведено приклад того, як встановити цю властивість:

#gcodegraphics{
    qproperty-jog_color: red;
}
Feed_color (основний, вторинний або колір у форматі RGBA)

Встановлює колір стрічки за замовчуванням.
Нижче наведено приклад того, як встановити цю властивість:

#gcodegraphics{
    qproperty-Feed_color: green;
}
Rapid_color (основний, вторинний або колір у форматі RGBA)

Встановлює колір швидкого переходу за замовчуванням.
Нижче наведено приклад того, як встановити цю властивість:

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

Визначає, чи забороняти зовнішні елементи керування за замовчуванням.
Нижче наведено приклад того, як встановити цю властивість:

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

Змінює поведінку кнопки миші для обертання, переміщення або масштабування в попередньому перегляді.
Нижче наведено приклад того, як встановити цю властивість:

#gcodegraphics{
    qproperty-MouseButtonMode: 1;
}

Існує 12 дійсних режимів:

Режим

Перемістити

Зум

Повернути

0

Ліворуч

Середній

Праворуч

1

Середній

Праворуч

Ліворуч

2

Середній

Ліворуч

Праворуч

3

Ліворуч

Праворуч

Середній

4

Праворуч

Ліворуч

Середній

5

Праворуч

Середній

Ліворуч

Режими 6-11 призначені для верстатів, яким потрібен лише 2D-попередній перегляд, таких як плазмові або деякі токарні верстати, і для яких не призначена кнопка повороту.

Режим

Перемістити

Зум

6

Ліворуч

Середній

7

Середній

Ліворуч

8

Праворуч

Ліворуч

9

Ліворуч

Праворуч

10

Середній

Праворуч

11

Праворуч

Середній

MouseWheelInvertZoom (bool)

Визначає, чи слід інвертувати напрямок масштабування під час масштабування за допомогою коліщатка миші.
Нижче наведено приклад того, як встановити цю властивість:

#gcodegraphics{
    qproperty-MouseWheelInvertZoom:True;
}
ACTION функції

Бібліотека ACTION може керувати графічним віджетом G-коду.

ACTION.RELOAD_DISPLAY()

Перезавантажте поточну програму, яка перерахує початок координат/зміщення.

ACTION.SET_GRAPHICS_VIEW(_view_)

Можна надсилати такі команди view:

  • 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_)

Безпосередньо встановіть відносну панораму огляду в напрямках x та y.

ACTION.ADJUST_ROTATE(_X,Y_)

Безпосередньо встановити відносне обертання огляду в напрямку x та y.

Він базується на віджеті OpenGL від PyQt.

2.11. JointEnableWidget - FIXME

Документація FIXME JointEnableWidget

2.12. JogIncrements - Віджет вибору значення кроку поштовху

Цей віджет дозволяє користувачеві вибирати значення кроку підйому для підйому.

Значення джоггу беруться з INI-файлу за адресою:

  • [DISPLAY]INCREMENTS, або

  • [DISPLAY]ANGULAR_INCREMENTS

Це буде доступно для всіх віджетів через STATUS.

Ви можете вибрати лінійний або кутовий приріст за допомогою властивості linear_option у редакторі властивостей Qt Designer.

Він базується на ComboBox PyQt.

2.13. MacroTab - Віджет спеціальних макросів

QtVCP MacroTab: спеціальний віджет макросів
Figure 9. QtVCP MacroTab: спеціальний віджет макросів

Цей віджет дозволяє користувачеві вибирати та налаштовувати спеціальні макропрограми для виконання невеликих завдань.

Він використовує зображення для візуального представлення макросу та для значка.

Він шукає спеціальні макроси, використовуючи визначення INI:

[RS274NGC]
SUBROUTINE_PATH =

Макроси — це підпрограми O-word зі спеціальними коментарями для роботи з панеллю запуску. Перші три рядки обов’язкові містити ключові слова нижче, четвертий є необов’язковим.

Ось приклад перших чотирьох рядків у O-словному файлі:

; 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

Це перший рядок у файлі O-word.

Це список тексту, розділеного комами, який відображається над записом.
У функції O-word буде по одному для кожної необхідної змінної.

Якщо макрос не потребує змінних, залиште його порожнім:

; MACROCOMMAND=
MACRODEFAULTS

Це має бути другий рядок у файлі O-word.

Це список значень за замовчуванням для кожної змінної у функції O-word, розділених комами.

Якщо ви використовуєте в списку слова «radiotrue», «radiofalse», «true» або «false», буде показано «radiobutton».
Якщо ви використовуєте слово «checktrue» або «checkfalse» у списку, буде показано «checkbox».
Якщо ви використовуєте слово «buttontrue» або «buttonfalse» у списку, буде показано «Checkable Pushbutton».
Якщо значення за замовчуванням має десяткову частину, macroTab припускає, що ви хочете отримати число з плаваючою комою, інакше — ціле число.

Note
Під час використання радіокнопок встановлюйте значення «true» лише для однієї з них. Радіокнопки використовуються для ексклюзивного вибору.
MACROIMAGE

Це має бути третій рядок у файлі O-word.

  • Зображення SVG
    Якщо використовуються файли зображень SVG, вони повинні закінчуватися розширенням .svg.

    Зображення необхідно додати до шарів SVG, які використовуються для визначення різних зображень для макросів та піктограм.

    Значення – це список із трьох упорядкованих полів, розділених комами:

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

    З:

    _filename_.svg

    Ім’я файлу зображення SVG як перше поле.
    Вважається, що він знаходиться в тій самій папці, що й файл O-word.

    *macro_layer_name

    Назва шару макрозображення як друге поле.

    icon_layer_name

    Назва шару зображення значка як необов’язкове третє поле. Якщо третій запис відсутній, те саме зображення буде використано для макросу та значка.

  • Зображення PNG/JPG:
    Значення залишається списком, розділеним комами:

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

    З:

    _macro_image_.(png|jpg)

    Ім’я файлу зображення макросу як перше поле.
    Передбачається, що файл зображення знаходиться в тій самій папці, що й макрос.

    _icon_image_.(png|jpg)

    Назва файлу зображення піктограми як необов’язкове друге поле.
    Якщо другий запис відсутній, те саме зображення буде використано для макросу та зображення.

Якщо ключове слово присутнє, але записи відсутні, зображення не використовуватимуться.

MACROOPTIONS

Цей необов’язковий рядок має бути четвертим рядком у файлі O-word.

Це список ключових слів та даних, розділених комами, всі з яких є необов’язковими:

LOAD:yes

Показує кнопку завантаження.

SAVE:yes

Показує кнопку збереження.

DEFAULT:ThisMacroData.txt

Встановлює попередньо вибрану назву файлу за замовчуванням під час завантаження/збереження даних для цього макросу.
Це може бути будь-яка дійсна назва файлу, але вона має закінчуватися на .txt.

PATH:~/linuxcnc/nc_files/mySavedMacrosData

Встановлює папку каталогу за замовчуванням для попереднього вибору під час завантаження/збереження даних для цього макросу.

2.13.1. Таблиці стилів MacroTab

Ось підказки щодо таблиць стилів для налаштування віджета MacroTab.

MacroTab CustomButton{
    width: 20px;
    height: 40px;
}

MacroTab QPushButton {
    width: 80px;
    height: 40px;
}

MacroTab QLabel {
    font: 24pt "Lato Heavy";
}

TouchSpinBox  LineEdit {
    font: 12pt "Lato Heavy";
}

TouchSpinBox  QPushButton {
    width: 60px;
    height: 100px;
}

2.14. OperatorValueLine - Віджет введення рядка значення оператора

Оператор вводить значення в цей віджет, які будуть застосовані до шаблону, а потім, за бажанням, відправлені в MDI негайно або застосовані пізніше. Віджет підтримує опціональний спливаючий калькулятор, клавіатуру або вибір інструментів для зручного введення даних на сенсорному екрані за допомогою налаштування dialog_keyboard_option. Щоб змінити тип діалогового вікна, відредагуйте dialog_code_option.

QtVCP Рядок значення оператора

2.14.1. Форматування команди MDI

Віджет підтримує опцію форматування, яка передається до функції Python format() для створення кінцевого результату для команди MDI. Спеціальний маркер {value} можна вставити в будь-якому місці цього форматного рядка, де має з’явитися значення. Властивість форматування називається mdi_command_format_option, наприклад:

  • M3 S{value} запустити шпиндель зі швидкістю, введеною оператором.

  • M6 T{value} G43 H{value} щоб виконати зміну інструменту та зміну зміщення довжини інструменту на основі введеного номера інструменту

2.14.2. Автоматична та відкладена проблема MDI

Віджет може бути налаштований на автоматичне виконання команди MDI після відправлення, якщо issue_mdi_on_submit_option встановлено на True. Якщо False, виконання команди може бути здійснено пізніше за допомогою сигналу або виклику функції з іншого віджета.

У випадках, коли issue_mdi_on_submit_option має значення False, виклик функції issue_mdi() призведе до виконання команди. Слоти, приєднані до віджетів, таких як PushButtons, можуть запускати команду MDI при натисканні, наприклад:

    def setSpindleSpeed(self, event):
        self.w.lineSpindleSpeed.issue_mdi()
        ACTION.SET_MANUAL_MODE()

    def setToolNumber(self, event):
        self.w.lineToolNumber.issue_mdi()
        ACTION.SET_MANUAL_MODE()

2.14.3. Приклад стилізації стану очікування

Віджет відстежує, чи введене значення є очікуючим і ще не було видане, за допомогою властивості isPendingValue. Це може бути використано для стилізації віджета за допомогою таблиці стилів. Це може бути використано для попередження оператора про те, що він ввів значення, але для його застосування необхідно виконати іншу дію.

У наступному уривку таблиці стилів віджет запису буде виділено блакитним фоном, коли значення очікують на розгляд і ще не застосовані.

#lineSpindleSpeed[isPendingValue=true],
#lineToolNumber[isPendingValue=true] {
    background: cyan;
}

#lineSpindleSpeed[isPendingValue=false],
#lineToolNumber[isPendingValue=false] {
    background: none;
}

2.15. MDILine - Віджет введення команд MDI в рядок

Тут можна вводити команди MDI.

Доступна спливаюча клавіатура.

Вбудовані команди

Також у цьому віджеті доступні вбудовані команди.

Введіть будь-яку з цих команд, чутливих до регістру, щоб завантажити відповідну програму або отримати доступ до функції:

HALMETER

Запускає LinuxCNC halmeter utility.

HALSHOW

Запускає LinuxCNC halshow корисність.

HALSCOPE

Запускає утиліту LinuxCNC halscope.

STATUS

Запускає утиліту LinuxCNC status.

CALIBRATION

Запускає LinuxCNC Calibration

CLASSICLADDER

Запускає посилання:../ladder/classic-ladder.html[ClassicLadder GUI], якщо компонент HAL реального часу ClassicLadder був завантажений конфігураційними файлами машини.

PREFERENCE

Завантажує файл налаштувань у GcodeEditor.

CLEAR HISTORY

Очищає історію MDI.

net

Див. команди halcmd net.
Якщо команда виконана невдало, виникне помилка.

  • Синтаксис: net <назва сигналу> <назва виводу>

  • Приклад: net plasmac:jog-inhibit motion.jog-stop

setp

Встановлює значення виводу або параметра.
Допустимі значення залежать від типу об’єкта виводу або параметра.
Це призводить до помилки, якщо типи даних не збігаються або вивод підключено до сигналу.

  • Синтаксис: setp <pin/parameter-name> <value>

  • Приклад: setp plasmac.resolution 100

unlinkp

Відключає контакт від сигналу.
Якщо контакт не існує, виникне помилка.
Запуск LinuxCNC з терміналу може допомогти визначити основну причину, оскільки там будуть відображатися повідомлення про помилки з hal_lib.c.

  • Синтаксис: unlinkp <pin name>

  • Приклад: unlinkp motion.jog-stop

Note
Функція MDILine spindle_inhibit може використовуватися файлом-обробником графічного інтерфейсу для блокування команд шпинделя M3, M4 та M5, якщо це необхідно.

Він базується на QLineEdit від PyQt.

2.16. MDIHistory - Віджет історії команд MDI

Відображає список попередніх MDI-команд, який можна прокручувати.

Для команд MDI вбудовано рядок редагування. З цього віджета можна отримати доступ до тих самих вбудованих команд MDILine.

Історія записується у файл, визначений в INI під заголовком [DISPLAY] (тут показано значення за замовчуванням):

MDI_HISTORY_FILE = '~/.axis_mdi_history'

2.17. MDITouchy - Віджет введення MDI на сенсорному екрані

QtVCP MDITouchy: Віджет введення MDI на сенсорному екрані
Figure 10. QtVCP MDITouchy: Віджет введення MDI на сенсорному екрані

Цей віджет відображає кнопки та рядки введення для введення команд MDI.

Виходячи з процесу введення MDI на сенсорному екрані LinuxCNC, його великі кнопки найбільш корисні для сенсорних екранів.

Використання MDITouchy:

  • Спочатку натисніть одну з кнопок G/XY, G/RO, M або T. Ліворуч з’являться поля для введення, які можна заповнити.

  • Потім натисніть «Далі» та «Назад», щоб переходити між полями.

  • Calc з’явиться діалогове вікно калькулятора.

  • Clear очищає поточний запис.

  • Команда Set Tool викличе зміну інструменту.

  • Set Origin дозволить встановити початок координат поточної системи G6x.

  • Macro викличе будь-які доступні програми для роботи з макросами (ngc).

Віджет потрібний явний виклик коду Python MDITouchy для фактичного виконання команди MDI:

  • Для коду файлу обробника
    Якщо віджет мав назву «mditouchy» в Qt Designer, команда нижче виконала б відображену команду MDI:

    self.w.mditouchy.run_command()
  • Для використання кнопки дії
    Якщо віджет мав назву «mditouchy» в Qt Designer, скористайтеся опцією кнопки дії «Викликати команди Python» та введіть:

    INSTANCE.mditouchy.run_command()

Кнопка макросу циклічно перемикає макроси, визначені в заголовку INI [DISPLAY].

Додайте один або декілька рядків MACRO такого формату:

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

У наведеному нижче прикладі increment – це назва макросу, і він приймає два параметри з назвами xinc та yinc.

MACRO = incerment xinc yinc

Тепер помістіть макрос у файл з назвою macro_name.ngc у каталозі PROGRAM_PREFIX або в будь-який каталог у SUBROUTINE_PATH, зазначеному у файлі INI.

Продовжуючи наведений вище приклад, він матиме назву increment.ngc, а його вміст виглядатиме так:

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

Зверніть увагу, що _назва підфайлу точно збігається з назвою файлу та назвою макросу, включаючи регістр літер.

Коли ви викликаєте макрос, натиснувши кнопку «Макрос», ви можете ввести значення для параметрів (у нашому прикладі це xinc та yinc).
Вони передаються макросу як позиційні параметри: #1, #2#N відповідно.
Параметри, які ви залишили порожніми, передаються як значення 0.

Якщо є кілька різних макросів, натискайте кнопку Макрос кілька разів, щоб перемикатися між ними.

У цьому простому прикладі, якщо ввести -1 для xinc та викликати цикл MDI, буде викликано швидкий рух G0, що переміщує на одиницю ліворуч.

Ця макрофункція корисна для зондування країв/отворів та інших завдань налаштування, а також, можливо, для фрезерування отворів або інших простих операцій, які можна виконувати з панелі без необхідності використання спеціально написаних програм G-коду.

2.18. OriginOffsetView - Віджет перегляду та налаштувань походження

QtVCP OriginOffsetsView: Віджет перегляду та налаштувань походження
Figure 11. QtVCP OriginOffsetsView: Віджет перегляду та налаштувань походження

Цей віджет дозволяє безпосередньо візуалізувати та змінювати зміщення походження системи користувача.

Він оновить файл параметрів LinuxCNC для внесених або знайдених змін.

Налаштування можна змінити в LinuxCNC лише після повернення до початкового положення та коли контролер руху не використовується.

Відображення та введення змінюватимуться між метричною та імперською системами вимірювання, залежно від поточних налаштувань G20 / G21 LinuxCNC.

Поточна система користувача, що використовується, буде виділена.

Додаткові дії можуть бути інтегровані для маніпулювання налаштуваннями.
Ці дії залежать від додаткового коду, доданого або до комбінованого віджета, такого як діалогове вікно originoffsetview, або до коду обробника екранів.
Типовими діями можуть бути «Очистити поточні зміщення користувача» або «Обнулити X».

Клацання по стовпцях і рядках дозволяє налаштувати параметри.

Для введення даних або тексту можна налаштувати спливаюче діалогове вікно.

Розділ коментарів буде записаний у файлі налаштувань.

Він базується на QTableView, QAbstractTableModel та ItemEditorFactory PyQt.
Властивості, функції та стилі базових об’єктів PyQt завжди доступні.

Властивості

OriginOffsetView має такі властивості:

dialog_code_string

Встановлює, яке діалогове вікно з’явиться для введення чисел.

test_dialog_code_string

Встановлює, яке діалогове вікно з’явиться після введення тексту.

metric_template

Формат числових даних у метричній системі.

imperial_template

Імперський числовий формат даних.

styleCodeHighlight

Колір підсвічування поточної використовуваної системи користувача.

Їх можна встановити в:

  • Qt Designer, в

  • Код обробника Python

    self.w.originoffsetview.setProperty('dialog_code','CALCULATOR')
    self.w.originoffsetview.setProperty('metric_template','%10.3f')
  • Або (якщо доречно) у таблицях стилів

    OriginOffsetView{
      qproperty-styleColorHighlist: lightblue;
    }

2.19. RadioAxisSelector - FIXME

Документація FIXME RadioAxisSelector

2.20. RoundButton - Віджет ActionButton круглої форми

Круглі кнопки працюють так само, як і ActionButtons, за винятком того, що кнопка обрізана.

Вони призначені лише для візуальної відмінності.

Вони мають дві властивості шляху для відображення зображень на значеннях true та false.

2.21. StateLabel - Віджет відображення міток станів режимів контролера

Це відобразить мітку на основі станів true/false режимів контролера машини.

Ви можете вибирати між різними текстами на основі «правда» чи «хиба».

Властивості вибору штатів

Штати можна вибрати за допомогою цих властивостей:

css_mode_status

True коли верстат знаходиться в режимі G96 Постійна швидкість поверхні.

diameter_mode_status

True коли верстат знаходиться в режимі G7 Діаметр токарного верстата.

fpr_mode_status

True коли верстат знаходиться в режимі G95 Подача на оберт.

metric_mode_status

True коли машина знаходиться в метричному режимі G21.

Властивості текстових шаблонів
true_textTemplate

Це буде текст, встановлений, коли опція має значення True.
Ви можете використовувати код Qt rich text для різних шрифтів/кольорів тощо.
Типовий шаблон для метричного режиму в стані true може бути: Metric Mode

false_textTemplate

Це буде текст, встановлений, коли опція має значення False.
Ви можете використовувати код Qt rich text для різних шрифтів/кольорів тощо.
Типовий шаблон для метричного режиму в стані false може бути: Imperial Mode.

Він базується на QLabel PyQt.

2.22. StatusLabel - Віджет відображення міток стану змінних контролера

Це відобразить мітку на основі вибраного стану контролера машини.
Ви можете змінити спосіб відображення стану, замінивши код форматування Python у текстовому шаблоні. Ви також можете використовувати форматований текст для різних шрифтів/кольорів тощо.

Вибрані штати

Ці стани можна вибрати:

actual_spindle_speed_status

Використовується для відображення фактичної швидкості шпинделя, повідомленої з виводу HAL spindle.0.speed-i.
Вона перетворюється на RPM.
Зазвичай використовується textTemplate з %d.

actual_surface_speed_status

Використовується для відображення фактичної швидкості різання на токарному верстаті на основі осі X і швидкості шпинделя.
Вона перетворюється на відстань за хвилину.
Зазвичай використовується textTemplate з %4.1f (фути за хвилину) і altTextTemplate з %d (метри за хвилину).

blendcode_status

Показує поточне налаштування G64.

current_feedrate_status

Показує поточну фактичну швидкість подачі.

current_FPU_status

Показує поточну фактичну подачу на одиницю.

fcode_status

Показує поточне запрограмоване налаштування коду F.

feed_override_status

Показує поточне налаштування корекції подачі у відсотках.

filename_status

Показує назву останнього завантаженого файлу.

filepath_status

Показує повний шлях до останнього завантаженого файлу.

gcode_status

Показує всі активні G-коди.

gcode_selected_status

Показати поточний вибраний рядок G-коду.

halpin_status

Показує вихідний сигнал вибраного виводу HAL.

jograte_status

Показує поточну швидкість поштовхового переміщення на основі QtVCP.

jograte_angular_status

Показує поточну кутову швидкість поштовху на основі QtVCP.

jogincr_status

Показує поточний приріст Jog на основі QtVCP.

jogincr_angular_status

Показує поточний приріст кутового повороту на основі QtVCP.

machine_state_status

Показує поточний стан інтерпретатора машини, використовуючи текст, описаний у списку_станів_машини.
Станами інтерпретатора є:

  • Зупинено

  • Запускаю

  • Зупинено

  • Призупинено

  • Очікування

  • Читання

max_velocity_override_status

Показує поточне налаштування корекції максимальної швидкості осі.

mcode_status

Шоу all active M-codes.

motion_type_status

Показує поточний тип руху машини, використовуючи текст, описаний у списку типів руху (motion_type_list).

  • Жоден

  • Швидкий

  • Годувати

  • Arc

  • Зміна інструменту

  • Зонд

  • Ротарі Індекс

requested_spindle_speed_status

Показує запитувану швидкість шпинделя — фактична може відрізнятися.

rapid_override_status

Показує поточне налаштування швидкого перемикання у відсотках (0-100).

spindle_override_status

Показує поточне налаштування корекції шпинделя у відсотках.

timestamp_status

Показує час на основі системних налаштувань.
Приклад корисного налаштування textTemplate: %I:%M:%S %p.
Див. модуль часу Python для отримання додаткової інформації.

tool comment_status

Повертає текст коментаря з поточного завантаженого інструменту.

tool diameter_status

Повертає діаметр з поточного завантаженого інструменту.

tool_number_status

Повертає номер поточного завантаженого інструменту.

tool_offset_status

Повертає зміщення поточного завантаженого інструменту, індексоване за допомогою index_number для вибору осі (0=x, 1=y тощо).

user_system_status

Показує активну систему координат користувача (налаштування G5x).

Інші об’єкти нерухомості
index_number

Ціле число, що визначає індекс стану інструмента для відображення.

state_label_list

Список позначок, що використовуються для опису різних станів машини.

motion_label_list

Список позначок, що використовуються для опису різних типів руху.

halpin_names

Ім’я halpin-а для моніторингу (повне ім’я, включаючи базову назву компонента HAL).

textTemplate

Зазвичай це використовується для імперських (G20) або кутових числових налаштувань, хоча не кожна опція має імперське/метричне перетворення.
Для налаштування текстового виводу використовуються правила форматування Python.
Можна використовувати %s для відсутності перетворення, %d для перетворення цілих чисел, %f для перетворення чисел з плаваючою комою тощо.
Також можна використовувати код Qt rich text.
Типовим шаблоном, що використовується для форматування імперських чисел з плаваючою комою в текст, є %9.4f або %9.4f inch.

alt_textTemplate

Зазвичай використовується для метричних (G21) числових налаштувань.
Використовує правила форматування Python для налаштування виводу тексту.
Типовим шаблоном, що використовується для форматування метричного числа з плаваючою комою в текст, є %10.3f або %10.3f mm.

Він базується на QLabel PyQt.

2.23. StatusImageSwitcher - Перемикач зображень стану контролера

Перемикач зображень статусу перемикатиметься між зображеннями на основі станів LinuxCNC.

*watch_spindle

Перемикається між 3 images: stop, fwd, revs.

*watch_axis_homed

Перемикається між 2 зображеннями: вісь не встановлена в початкове положення, вісь встановлена в початкове положення.

*watch_all_homed

Перемикатиметься між 2 зображеннями: не всі розміщені, усі розміщені.

*watch_hard_limits

Перемикатиметься між 2 зображеннями або одним на кожне з’єднання.

Ось приклад його використання для відображення піктограми стану самонаведення осі Z:

QtVCP StatusImageSwitcher: Перемикач зображень стану контролера
Figure 12. QtVCP StatusImageSwitcher: Перемикач зображень стану контролера

У розділі властивостей зверніть увагу на таке:

  • watch_axis_homed позначено

  • axis_letter встановлено на Z

Якщо двічі клацнути на image_list, з’явиться діалогове вікно, яке дозволить вам додати шляхи до зображень.

Якщо у вас є одне зображення як значок і одне прозоре зображення, то виглядатиме так, ніби воно показує та приховує значок.

Вибір шляхів до зображень можна здійснити, вибравши властивість pixmap та вибравши зображення.

Note
Налаштування pixmap призначене лише для тестового відображення та буде ігноруватися за межами Qt Designer.
  • Клацніть правою кнопкою миші на назві зображення, і ви побачите «Копіювати шлях».

  • Натисніть «Копіювати шлях».

  • Тепер двічі клацніть властивість «список зображень», щоб відобразилося діалогове вікно.

  • Натисніть кнопку «Новий».

  • Вставте шлях до зображення в поле введення.

Зробіть це ще раз для наступного зображення.
Використайте чітке зображення для позначення прихованої значка.

Ви можете перевірити відображення зображень зі списку зображень, змінивши номер зображення. У цьому випадку 0 не має базового положення, а 1 має базове положення.
Це призначено тільки для тестування відображення і буде ігноруватися поза Qt Designer.

2.24. StatusStacked - Віджет перемикання режимів відображення стану

Цей віджет відображає одну з трьох панелей залежно від режиму LinuxCNC.

Це дозволяє автоматично відображати різні віджети в режимах Manual, MDI та Auto.

TODO

Він базується на віджеті QStacked від PyQt.

2.25. ScreenOption - Віджет налаштувань загальних параметрів

Цей віджет не додає нічого візуального до екрана, але налаштовує важливі опції.

Це бажаний спосіб використання цих опцій.

Властивості

Ці властивості можна встановити в Qt Designer, у коді обробника Python або (якщо доречно) у таблицях стилів.

До них належать:

halCompBaseName

Якщо залишити порожнім, QtVCP використовуватиме ім’я екрана як базове ім’я компонента HAL.
Якщо встановлено, QtVCP використовуватиме цей рядок як базове ім’я компонента HAL.
Якщо під час завантаження QtVCP використовується опція командного рядка -c, він використовуватиме ім’я, вказане в командному рядку — це замінить усі вищезазначені опції.
Якщо ви програмно встановите базове ім’я в handlerfile, воно замінить усі вищезазначені опції.
Цю властивість не можна встановити в таблицях стилів.

notify_option

Підключення до бульбашок сповіщень на робочому столі для отримання помилок та повідомлень.

notify_max_messages

Кількість повідомлень, що відображаються на екрані одночасно.

catch_close_option

Ловіть подію закриття, щоб з’явилося запитання _«Ви впевнені?».

close_overlay_color

Колір прозорого шару, що відображається після виходу.

catch_error_option

Моніторинг каналу помилок LinuxCNC.
Це також надсилає повідомлення через STATUS до будь-чого, що реєструється.

play_sounds_option

Відтворення звуків за допомогою beep, espeak та системного звуку.

use_pref_file_option

Налаштування шляху до файлу налаштувань.
Використання магічного слова WORKINGFOLDER у шляху до файлу налаштувань замінить його на шлях до запущеної конфігурації, наприклад WORKINFOLDER/my_preferences.

use_send_zmq_option

Використовується для ініціювання вихідних повідомлень на основі ZMQ.

use_receive_zmq_messages

Використовується для ініціювання ZMQ на основі вхідних повідомлень.
Ці повідомлення можуть бути використані для виклику функцій у файлі обробника, що дозволяє зовнішнім програмам тісно інтегруватися з екранами на основі QtVCP.

embedded_program_option

Вбудовувати програми, визначені у INI.

default_embed_tab

Це властивість для розташування за замовчуванням для вбудовування зовнішніх програм.
Її слід встановити як назву віджета сторінки вкладки в Qt Designer.

focusOverlay_option

Focus_overlay розмістить прозоре зображення або кольорову панель поверх головного екрана, щоб підкреслити фокус на зовнішній події – зазвичай діалоговому вікні.

messageDialog_option

Налаштовує діалогове вікно повідомлень – використовується для загальних повідомлень.

message_overlay_color

Колір прозорого шару, що відображається під час відображення діалогового вікна повідомлення.

closeDialog_option

Встановлює стандартне діалогове вікно закриття екрана.

entryDialog_option

Налаштовує діалогове вікно введення чисел.

entryDialogSoftKey_option

Встановлює плаваючу програмну клавіатуру, коли діалогове вікно введення перебуває у фокусі.

entry_overlay_color

Колір прозорого шару, що відображається під час відображення діалогового вікна введення.

toolDialog_option

Налаштовує діалогове вікно ручної зміни інструменту, включаючи контакт HAL.

tool_overlay_color

Колір прозорого шару, що відображається, коли відображається діалогове вікно інструмента.

ToolUseDesktopNotify

Можливість використання діалогових вікон сповіщень на робочому столі для діалогового вікна ручної зміни інструменту.

ToolFrameless

Користувачі не можуть легко переміщувати діалогові вікна без рамки.

fileDialog_option

Встановлює діалогове вікно вибору файлу.

file_overlay_color

Колір прозорого шару, що відображається під час відображення діалогового вікна файлу.

keyboardDialog_option

Налаштовує віджет введення з клавіатури.

keyboard_overlay_color

Колір прозорого шару, що відображається під час відображення діалогового вікна клавіатури.

vesaProbe_option

Налаштовує діалогове вікно зонду у стилі Versa.

versaProbe_overlay_color

Колір прозорого шару, що відображається, коли відображається діалогове вікно versaProbe.

macroTabDialog_option

Налаштовує діалогове вікно вибору макросу.

macroTab_overlay_color

Колір прозорого шару, що відображається, коли відображається діалогове вікно macroTab.

camViewDialog_option

Налаштовує діалогове вікно вирівнювання камери.

camView_overlay_color

Колір прозорого шару, що відображається, коли відображається діалогове вікно camView.

toolOffset_option

Налаштовує діалогове вікно відображення/редактора зміщення інструменту.

toolOffset_overlay_color

Колір прозорого шару, що відображається, коли відображається діалогове вікно toolOffset.

originOffset_option

Налаштовує діалогове вікно відображення/редактора походження.

originOffset_overlay_color

Колір прозорого шару, що відображається, коли відображається діалогове вікно originOffset.

calculatorDialog_option

Налаштовує діалогове вікно введення даних калькулятора.

calculator_overlay_color

Колір прозорого шару, що відображається, коли відображається діалогове вікно калькулятора.

machineLogDialog_option

Налаштовує діалогове вікно для відображення журналів з машини та QtVCP.

machineLog_overlay_color

Колір прозорого шару, що відображається, коли відображається діалогове вікно machineLog.

runFromLineDialog_option

Встановлює діалогове вікно для відображення параметрів запуску під час запуску виконання машини з довільного рядка.

runFromLine_overlay_color

Колір прозорого шару, що відображається, коли відображається діалогове вікно runFromLine.

user1Color

Додатковий колір, який дизайнер екрану може використовувати у своєму дизайні.

user2Color

Додатковий колір, який дизайнер екрану може використовувати у своєму дизайні.

user3Color

Додатковий колір, який дизайнер екрану може використовувати у своєму дизайні.

user4Color

Додатковий колір, який дизайнер екрану може використовувати у своєму дизайні.

user5Color

Додатковий колір, який дизайнер екрану може використовувати у своєму дизайні.

user6Color

Додатковий колір, який дизайнер екрану може використовувати у своєму дизайні.

user7Color

Додатковий колір, який дизайнер екрану може використовувати у своєму дизайні.

user8Color

Додатковий колір, який дизайнер екрану може використовувати у своєму дизайні.

user9Color

Додатковий колір, який дизайнер екрану може використовувати у своєму дизайні.

user10Color

Додатковий колір, який дизайнер екрану може використовувати у своєму дизайні.

Програмне налаштування властивостей

Дизайнер екрану вибирає налаштування за замовчуванням для віджета screenOptions.

Після вибору більшість із них більше не потрібно буде змінювати. Але за потреби деякі можна змінити у файлі обробника або в таблицях стилів.

  • У файлі обробника:
    Тут ми посилаємося на віджет за допомогою імені, визначеного користувачем у Qt Designer:

    # червоний, зелений, синій, альфа 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)
  • У таблицях стилів:
    Тут ми можемо посилатися на віджет за назвою, визначеною користувачем у Qt Designer, або за назвою класу віджета.

    /* червоний, зелений, синій 0-255, альфа 0-100% або від 0,0 до 1,0 */
    /* Знак # використовується для позначення імені віджета, визначеного в Qt Designer */
    /* відповідає/застосовується лише до цього названого віджета */
    #screen_options {
      qproperty-close_overlay_color: rgba(0, 255, 0, 0.75)
    }

Деякі налаштування перевіряються лише під час запуску, тому не призведуть до змін після запуску. У цих випадках вам потрібно буде внести зміни лише в Qt Designer.

Записи файлу налаштувань

Якщо вибрано опцію preference file, віджет screenOption створить INI-файл налаштувань.

Хоча інші віджети QtVCP додадуть до цього списку, віджет screenOptions додасть ці записи під такими заголовками:

[SCREEN_OPTIONS]
catch_errors (bool)
desktop_notify (bool)

Чи відображати помилки/повідомлення в механізмі сповіщень системи.

notify_max_msgs (int)

Кількість помилок, що відображаються одночасно.

shutdown_check (bool)

Чи слід виводити діалогове вікно підтвердження.

sound_player_on (bool)

Вмикає або вимикає всі звуки.

[MCH_MSG_OPTIONS]
mchnMsg_play_sound (bool)

Відтворювати звуковий сигнал сповіщення, коли з’являється діалогове вікно.

mchnMsg_speak_errors (bool)

Використання Espeak для озвучування повідомлень про помилки.

mchnMsg_speak_text (bool)

Використовувати Espeak для озвучування всіх інших повідомлень.

mchnMsg_sound_type (str)

Звук, який відтворюватиметься під час відображення повідомлень. Див. примітки нижче.

[USER_MSG_OPTIONS]
usermsg_play_sound (bool)

Відтворювати звуковий сигнал сповіщення, коли з’являється діалогове вікно.

userMsg_sound_type (str)

Звук, який відтворюватиметься під час відображення повідомлень користувача. Див. примітки нижче.

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

Звук, який відтворюватиметься під час відображення повідомлень. Див. примітки нижче.

shutdown_exit_sound_type (str)

Звук, який відтворюватиметься під час відображення повідомлень. Див. примітки нижче.

shutdown_msg_title (str)

Короткий заголовок для відображення в діалоговому вікні.

shutdown_msg_focus_text (str)

Великий текстовий рядок для накладання на шар фокуса.

shutdown_msg_detail (str)

Довший описовий рядок для відображення в діалоговому вікні.

NOTIFY_OPTIONS
notify_start_greeting (bool)

Чи відображати діалогове вікно привітання під час запуску.

notify_start_title (str)

Короткий рядок заголовка.
Якщо також вибрано опцію озвучування, заголовок буде озвучено мовою Espeak.

notify_start_detail (str)

Довший рядок опису.

notify_start_timeout (int)

Час у секундах, який відображатиметься перед закриттям.

*_sound_type записи
  • Системні звуки
    В інсталяціях на базі Debian/Ubuntu/Mint ці системні звуки мають бути доступні як записи типу звуку вище:

    • ERROR

    • READY

    • DONE

    • ATTENTION

    • RING

    • LOGIN

    • LOGOUT

    • BELL

    Ці параметри звуку вимагають встановлення python3-gst1.0.

  • Аудіофайли
    Ви також можете вказати шлях до довільного аудіофайлу.
    Ви можете використовувати ~ у шляху, щоб замінити шлях до домашнього файлу користувача.

  • Звукові сигнали ядра
    Якщо модуль beep kernel встановлено і він не вимкнено, доступні такі записи звукових типів:

    • BEEP

    • BEEP_RING

    • BEEP_START

  • Перетворення тексту на мовлення
    Якщо встановлено модуль Espeak (python3-espeak), ви можете використовувати запис SPEAK для вимовляння тексту:

  • SPEAK '_моє повідомлення_'

2.26. StatusSlider - Віджет повзунка налаштування контролера

Цей віджет дозволяє користувачеві налаштовувати налаштування LinuxCNC за допомогою повзунка.

Віджет може налаштовувати:

  • Швидкість штовхання

  • Швидкість кутового поштовху

  • Швидкість подачі

  • Швидкість корекції шпинделя

  • Швидка швидкість перевизначення

Властивості

StatusSlider має такі властивості:

halpin_option

Встановлює опцію для створення HAL-виведення з плаваючою точкою, яке відображає поточне значення.

rapid_rate

Вибирає повзунок швидкості швидкого перевизначення.

feed_rate

Вибирає повзунок швидкості корекції подачі.

spindle_rate

Вибирає повзунок швидкості корекції шпинделя.

jograte_rate

Вибирає лінійний повзунок зі змінною довжиною.

jograte_angular_rate

Вибирає повзунок з кутовою візерунчастою решіткою.

max_velocity_rate

Вибирає повзунок максимальної швидкості.

alertState

Рядок для визначення зміни стилю: read-only, under, over та normal.

alertUnder

Встановлює значення числа з плаваючою комою, яке сигналізує таблиці стилів про попередження «менше».

alertOver

Встановлює значення числа з плаваючою комою, яке сигналізує таблиці стилів про попередження «перевищення».

Їх можна встановити в:

  • Дизайнер Qt

  • Код обробника Python,

    self.w.status_slider.setProperty('spindle_rate',True)
    self.w.status_slider.setProperty('alertUnder',35)
    self.w.status_slider.setProperty('alertOver',100)
  • Або (якщо доречно) у таблицях стилів.

    /* кольори попередження для перевизначень, якщо значення виходять за межі нормального діапазону*/
    /* назва об'єкта віджета — slider_spindle_ovr */
    
    #slider_spindle_ovr[alertState='over'] {
        background: red;
    }
    #slider_spindle_ovr[alertState='under'] {
        background: yellow;
    }

Він базується на QSlider від PyQt.

2.27. StateLED - Віджет світлодіодного індикатора стану контролера

Цей віджет надає статус вибраного стану LinuxCNC.

Штати

Варіанти штату такі:

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

Властивості

Є властивості, які можна змінити:

halpin_option

Додає вихідний контакт, який відображає вибраний стан.

invert_state_status

Інвертувати стан світлодіода порівняно зі станом LinuxCNC.

diameter

Діаметр світлодіода.

color

Колір світлодіода у ввімкненому стані.

off_color

Колір світлодіода у вимкненому стані.

вирівнювання

Підказка щодо вирівнювання в Qt.

стан

Поточний стан світлодіода (для тестування в Qt Designer).

миготливий

Вмикає та вимикає опцію миготіння.

Швидкість спалаху

Встановлює частоту спалахів.

Властивості світлодіода можна визначити в таблиці стилів за допомогою наступного коду, доданого до файлу .qss.

Світлодіод_стану #name_of_led{       <1>
  qproperty-color: red;
  qproperty-diameter: 20;
  qproperty-flashRate: 150;
}
  1. name_of_led буде ім’ям, визначеним у редакторі Qt Designer.

Він базується на віджеті LED.

2.28. StatusAdjustmentBar - Віджет налаштування значень контролера

Цей віджет дозволяє встановлювати значення за допомогою кнопок під час відображення панелі.

Він також має додаткову кнопку перемикання високого/низького рівня, яку можна утримувати для встановлення рівнів.

Віджет може налаштовувати:

  • Швидкість штовхання

  • Швидкість кутового поштовху

  • Швидкість подачі

  • Швидкість корекції шпинделя

  • Швидка швидкість перевизначення

Він базується на QProgressBar PyQt.

2.29. SystemToolButton - Віджет вибору системи користувача

Цей віджет дозволяє вам вручну вибрати систему користувача G5x, натиснувши та утримуючи.

Якщо ви не встановите текст кнопки, він автоматично оновиться до поточної версії системи.

Він базується на QToolButton PyQt.

2.30. StateEnableGridlayout - Віджет контейнера з увімкненим станом контролера

_вимкніть віджети всередині нього залежно від поточного стану LinuxCNC_.

Це контейнер, в який можна розміщувати інші віджети.

Вбудовані віджети будуть сірими, коли StateEnableGridlayout вимкнено.

Він може вибірково реагувати на:

  • Машина ввімкнена

  • Інтерпретатор неактивний

  • Аварійна зупинка вимкнена

  • Усі домашні

Він базується на QGridLayout PyQt.

2.31. StatusImageSwitcher - Віджет перемикання зображень стану контролера

Цей віджет відображатиме зображення на основі статусу LinuxCNC.

Ви можете переглянути:

  • стан шпинделя,

  • стан усіх, хто має житло,

  • стан певної осі, що знаходиться в головному положенні,

  • стан жорстких обмежень.

Він базується на FIXME від PyQt

2.32. ToolOffsetView - Інструменти Зміщення Перегляд та редагування Віджет

QtVCP ToolOffsetView: Інструменти Зміщення Перегляд та редагування Віджет
Figure 13. QtVCP ToolOffsetView: Інструменти Зміщення Перегляд та редагування Віджет

Цей віджет відображає та дозволяє змінювати зміщення інструментів.

Він оновить таблицю інструментів LinuxCNC для внесених або знайдених змін.

Налаштування інструмента можна змінити в LinuxCNC лише після повернення до початкового положення та коли контролер руху не використовується.

Відображення та введення змінюватимуться між метричною та імперською системами залежно від поточних налаштувань G20/G21 LinuxCNC.

Поточний інструмент, що використовується, буде виділено, а поточний вибраний інструмент буде виділено іншим кольором.

Прапорець поруч із кожним інструментом можна використовувати для вибору дії, яка залежить від додаткового коду, доданого до комбінованого віджета, такого як діалогове вікно toolOffsetView або код обробника екранів.
Типовими діями є «завантажити вибраний інструмент», «видалити вибрані інструменти» тощо.

Клацання по стовпцях і рядках дозволяє налаштувати параметри.

Для введення даних або тексту можна налаштувати спливаюче діалогове вікно.

Розділ коментарів зазвичай відображається в діалоговому вікні ручної зміни інструменту.

Якщо використовується конфігурація токарного верстата, можуть бути стовпці для зносу по осях X та Z.

Щоб використовувати ці стовпці для налаштування зносу інструменту, потрібна переналаштована процедура зміни інструменту.

Він базується на QTableView, QAbstractTableModel та ItemEditorFactory PyQt.
Властивості, функції та стилі базових об’єктів PyQt завжди доступні.

Властивості

ToolOffsetView має властивості, які можна встановити в Qt Designer, у коді обробника Python або (якщо це доречно) у таблицях стилів:

dialog_code_string

Встановлює, яке діалогове вікно з’явиться для введення чисел.

text_dialog_code_string

Встановлює, яке діалогове вікно з’явиться після введення тексту.

metric_template

Формат числових даних у метричній системі.

imperial_template

Імперський числовий формат даних.

styleCodeHighlight

Поточний колір виділення інструменту, що використовується.

styleCodeSelected

Вибраний колір виділення.

У файлі обробника:

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

і в таблицях стилів:

ToolOffsetView{
  qproperty-styleColorHighlist: lightblue;
  qproperty-styleColorSelected: #444;
}
Функції

ToolOffsetView має деякі функції, корисні для розробників екранів для додавання дій:

add_tool()

Додає порожній інструмент-заповнювач (99), який користувач може редагувати відповідно до своїх потреб.

delete_tools()

Видаляє інструменти, вибрані з поточного прапорця.

get_checked_list()

Повертає список інструментів, вибраних за допомогою прапорців.

set_all_unchecked()

Зніміть позначки з усіх вибраних інструментів.

Приклад файлу-обробника, що виконує вищезгадані функції.
self.w.tooloffsetview.add_tool()
self.w.tooloffsetview.delete_tools()
toolList = self.w.tooloffsetview.get_checked_list()
self.w.tooloffsetview.set_all_unchecked()

2.33. VersaProbe - Віджет зондування фрезерування

QtVCP VersaProbe: Віджет зондування фрезерування
Figure 14. QtVCP VersaProbe: Віджет зондування фрезерування

Віджет для зондування на фрезерному верстаті. Використовується екраном QtDragon.

3. Віджети діалогових вікон

Діалогові вікна використовуються для презентації або запиту негайно необхідної інформації цілеспрямованим чином.

Типові діалогові вікна, що використовуються, можна завантажити за допомогою віджета ScreenOptions.

Ви також можете додати їх безпосередньо до UI, але кожне діалогове вікно повинно мати унікальну назву запуску, інакше ви побачите кілька діалогових вікон, що відображатимуться одне за одним.

Використовуйте діалоги з коду Python

Ви можете відображати діалогові вікна безпосередньо за допомогою коду Python, але безпечніший спосіб — використовувати повідомлення STATUS для запиту запуску діалогового вікна та повернення зібраної інформації.

  • Зареєструйтесь на каналі STATUS:
    Щоб налаштувати це, спочатку зареєструйтесь, щоб отримувати повідомлення general від STATUS:

    STATUS.connect('general',self.return_value)
  • Додати функцію для виклику діалогового вікна:
    Ця функція повинна створити повідомлення dict для відправки в діалогове вікно.
    Це повідомлення буде передано назад у загальному повідомленні з додаванням `повернення змінної.
    До повідомлення можна додати додаткову інформацію про користувача. Діалогове вікно проігнорує її і передасть назад.

    NAME

    Запускає кодову назву діалогового вікна для відображення.

    ID

    Унікальний ідентифікатор, щоб ми обробляли лише запитуваний нами діалог.

    TITLE

    Заголовок, який буде використано в діалоговому вікні.

    def show_dialog(self):
        mess = {'NAME':'ENTRY','ID':'__test1__',
                'TITLE':'Test Entry'}
        ACTION.CALL_DIALOG, mess)
  • Додайте функцію зворотного виклику, яка обробляє загальне повідомлення:
    Майте на увазі, що ця функція отримає всі загальні повідомлення, тому не гарантується, що ключові імена dict будуть там. Рекомендується використовувати функцію .get() та/або try/except. Ця функція повинна:

    • перевірте, чи ім’я та ідентифікатор такі ж, як ми надіслали,

    • потім витягніть повернене значення та будь-які змінні користувача.

    # обробити повідомлення про повернення STATUS
    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 - Віджет загального діалогового вікна повідомлень

Це загальний віджет діалогового вікна повідомлень.

Якщо присутній віджет Focus Overlay, він може сигналізувати про його відображення.

Якщо бібліотеку звуків налаштовано, вона може відтворювати звуки.

Існують параметри, які можна встановити під час запиту діалогу, вони будуть додані до повідомлення dict.

TITLE

Заголовок діалогового вікна.

MESSAGE

Текст заголовка повідомлення виділено жирним шрифтом.

MORE

Стандартний текст під заголовком.

DETAILS

Початковий прихований текст.

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

Ще не впроваджено.

FOCUSTEXT (overlay text|None)

Текст, який буде відображатися, якщо використовується накладання фокуса. Використовуйте «Немає», якщо тексту немає.

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

Колір, який буде використано, якщо використовується накладання фокуса.

PLAYALERT

Звук, який відтворюватиметься, якщо звук доступний, наприклад, SPEAK <розмовлене_повідомлення> .

Під час використання функції request-dialog класу STATUS, ім’я запуску за замовчуваннямMESSAGE.

Він базується на QMessagebox PyQt.

3.2. ToolDialog - Віджет діалогового вікна ручної зміни інструментів

QtVCP ToolDialog: Діалогове вікно ручної зміни інструменту
Figure 15. QtVCP ToolDialog: Діалогове вікно ручної зміни інструменту

Це використовується як підказка для ручної зміни інструменту.

Він має виводи HAL для підключення до контролера верстата. Виводи мають назви та ж самі, що й у оригінальному інструкційному посібнику AXIS, і працюють так само.

Діалогове вікно зміни інструменту можна запустити лише за допомогою контактів HAL.

Якщо присутній віджет Focus Overlay, він сповістить про його відображення.

Він базується на QMessagebox PyQt.

3.3. FileDialog - Віджет діалогу вибору файлів для завантаження та збереження

QtVCP FileDialog: Віджет вибору файлів для завантаження та збереження
Figure 16. QtVCP FileDialog: Віджет вибору файлів для завантаження та збереження

Це використовується для завантаження файлів G-коду.

Якщо присутній віджет Focus Overlay, він сповістить про його відображення.

Під час використання функції request-dialog класу STATUS, назви запуску за замовчуванням - LOAD або SAVE.

Існують параметри, які можна встановити під час запиту діалогу, вони будуть додані до словника повідомлення:

EXTENSIONS
FILENAME
DIRECTORY

Приклад виклику Python для завантаження діалогу:

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)

А також для діалогового вікна збереження

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)

Він базується на QMessagebox PyQt.

3.4. OriginOffsetDialog - Віджет діалогового вікна налаштування зміщення походження

QtVCP `OriginOffsetDialog`: Віджет налаштування зміщення походження
Figure 17. QtVCP OriginOffsetDialog: Віджет налаштування зміщення походження

Цей віджет дозволяє безпосередньо змінювати зміщення походження системи користувача у діалоговому вікні.

Якщо присутній віджет Focus Overlay, він сигналізує про його відображення.

Під час використання функції request-dialog класу STATUS, ім’я запуску за замовчуванням — ORIGINOFFSET.

Він базується на QDialog від PyQt.

3.5. ToolOffsetDialog - Віджет діалогового вікна налаштування зміщення інструмента

QtVCP `ToolOffsetDialog`: Віджет діалогового вікна налаштування зміщення інструмента
Figure 18. QtVCP ToolOffsetDialog: Віджет діалогового вікна налаштування зміщення інструмента

Цей віджет дозволяє змінювати зміщення інструменту безпосередньо у діалоговому вікні.

Якщо присутній віджет Focus Overlay, він сигналізує про його відображення.

Під час використання функції request-dialog класу STATUS, ім’я запуску за замовчуванням — TOOLOFFSET.

Він базується на QDialog від PyQt.

3.6. ToolChooserDialog - Віджет діалогового вікна вибору інструментів

QtVCP `ToolChooserDialog`: Віджет діалогового вікна вибору інструментів
Figure 19. QtVCP ToolChooserDialog: Віджет діалогового вікна вибору інструментів

Цей віджет дозволяє оператору вибрати один з інструментів, визначених у таблиці інструментів. Якщо інструмент вибрано і натиснуто кнопку «Застосувати» або двічі клацнуто на інструменті, діалогове вікно поверне номер вибраного інструменту. Це можна використовувати разом з віджетом OperatorValueLine, наприклад, для створення віджета зміни інструменту.

Якщо присутній віджет Focus Overlay, він сигналізує про його відображення.

Під час використання функції request-dialog класу STATUS, ім’я запуску за замовчуванням — TOOLCHOOSER.

Він базується на QDialog від PyQt.

3.7. MachineLog - Віджет відображення журналу подій машини

Цей віджет відображає різні повідомлення про події журналу, які були виведені системою протягом поточного сеансу. Це включає інформаційні повідомлення, а також помилки.

QtVCP `MachineLog`: Віджет журналу машини
Figure 20. QtVCP MachineLog: Журнал машинних подій у режимі machine_log (звичайний)
QtVCP `MachineLog`: Віджет журналу машини
Figure 21. QtVCP MachineLog: Журнал машинних подій у режимі machine_log_severity

Можуть відображатися два різних типи журналів:

  • журнал машини (звичайний текст або виділено рівень серйозності)

  • журнал інтегратора (лише звичайний текст)

Тип журналу, що відображається віджетом, контролюється властивостями опції віджета. Вибравши machine_log_option або integrator_log_option, буде відображено відповідний журнал. Ці опції відображатимуть журнали у простому стилі у віджеті Qt QTextEdit.

Крім того, можна вибрати властивість machine_log_severity_option, яка відображатиме журнал машини різними кольорами залежно від важливості повідомлення, використовуючи QTableWidget. Кольори можна налаштувати за допомогою властивостей віджета.

3.7.1. Видача повідомлень журналу з рівнем серйозності

Серйозність передається через значення option, яке надсилається разом із сигналом STATUS під назвою update-machine-log. Параметр option – це список, розділений комами, який зазвичай містить

``` text = an error has occurred. STATUS.emit(update-machine-log, text, TIME,ERROR) ```

3.7.2. Очищення журналу

Журнал можна очистити, викликавши метод clear() віджета.

3.8. MacroTabDialog - Віджет діалогового вікна запуску макросів

Це діалогове вікно для відображення віджета макровкладки.

MacroTab відображає вибір макропрограм для запуску за допомогою піктограм.

Якщо присутній віджет Focus Overlay, він сповістить про його відображення.

Під час використання функції request-dialog класу ``STATUS``, ім’я запуску за замовчуванням — MACROTAB.

Він базується на QDialog від PyQt.

3.9. CamViewDialog - Віджет діалогового вікна вирівнювання деталей веб-камери

Це діалогове вікно для відображення віджета CamView для вирівнювання деталей веб-камери.

Під час використання функції request-dialog класу ``STATUS``, ім’я запуску за замовчуванням — CAMVIEW.

Він базується на QDialog від PyQt.

3.10. EntryDialog - Віджет діалогового вікна редагування рядка

Це діалогове вікно для відображення рядка редагування для введення інформації, такої як зміщення початку координат.

Він повертає запис через повідомлення STATUS, використовуючи Python DICT.

DICT містить щонайменше назву запитуваного діалогу та ідентифікаційний код.

Під час використання функції request-dialog класу ``STATUS``, ім’я запуску за замовчуванням — ENTRY.

Він базується на QDialog від PyQt.

3.11. CalculatorDialog - Віджет діалогового вікна калькулятора

Це діалогове вікно для відображення калькулятора для введення чисел, таких як зміщення від початку координат, оберти шпинделя тощо. Воно призначене в першу чергу для використання на сенсорному екрані, але також підтримує введення з фізичної клавіатури.

QtVCP CalculatorDialog: Віджет діалогового вікна калькулятора
Figure 22. QtVCP CalculatorDialog: Віджет діалогового вікна калькулятора

Він повертає запис через повідомлення STATUS, використовуючи Python DICT.

DICT містить щонайменше назву запитуваного діалогу та ідентифікаційний код.

Під час використання функції request-dialog класу ``STATUS``, ім’я запуску за замовчуванням — CALCULATOR.

Він базується на QDialog від PyQt.

3.11.1. Параметри файлу налаштувань

У розділі CALCULATOR файлу налаштувань можна встановити такі параметри:

  • constValuesList - список загальних значень, розділених комами, які ви можете ввести і які з’являться на спеціальному рядку кнопок внизу калькулятора. Наприклад, при встановленні значення 0.100, -0.100 з’являться дві кнопки для +0.100 і -0.100, які часто використовуються при пошуку країв на дюймових фрезах. Можна ввести до шести (6) значень, після чого список буде обрізаний. Значення повинні бути дійсними числами з плаваючою комою або цілими числами.

  • onShowBehavior - Список необов’язкових дій, які будуть активовані, коли відображається діалогове вікно калькулятора. Кожну опцію потрібно розділяти комою.

    • CLEAR_ALL видавати команду Очистити все щоразу, коли відображається калькулятор. Це очистить усі попередньо введені значення з моменту останнього використання калькулятора та відкриє його зі значенням відображення, встановленим на 0

    • FORCE_FOCUS примусово фокусує поле введення калькулятора, коли відображається віджет. Це дозволить фізичній клавіатурі правильно вводити дані у віджет без додаткових кліків. Також це має побічний ефект вибору поточного значення, так що введення з фізичної клавіатури замінить існуюче значення, якщо вибір тексту не буде змінено.

  • acceptOnReturnKey - Якщо встановлено значення True, калькулятор прийме поточне значення і закриє діалогове вікно при натисканні клавіші повернення/введення на клавіатурі. Якщо встановлено значення False, клавіша повернення буде проігнорована і необхідно натиснути кнопку Застосувати. У випадках, коли доступна кнопка Застосувати наступне, клавіша повернення виконає цю дію, а діалогове вікно залишиться відкритим.

3.11.2. Підтримка фізичної клавіатури

Хоча метою цього віджета є забезпечення зручного інтерфейсу для сенсорного екрану, для введення значень можна використовувати фізичну клавіатуру, зазвичай цифрову. Клавіші працюють в основному так, як і слід очікувати, але є також кілька спеціальних функцій клавіш:

  • Клавіша Enter або Return еквівалентна оператору Equal (=) у випадках, коли обчислення знаходиться в стані очікування. В іншому випадку вона виконуватиме функцію Apply, якщо вона ввімкнена через налаштування acceptOnReturnKey.

  • Клавіша «мінус» (-) змінює знак поточного числа на дисплеї калькулятора, якщо натиснути її двічі поспіль. В іншому випадку, якщо натиснути її тільки один раз, вона виконає операцію віднімання, як і очікується.

  • Alt+стрілка вліво виконає функцію Назад, переходячи до попереднього поля, якщо це підтримується.

  • Alt+Стрілка вправо виконає функцію Далі, переходячи до наступного поля, якщо це підтримується.

  • Alt+Backspace призведе до виходу з калькулятора та не поверне значення для викликаючого віджета.

3.12. RunFromLine - Віджет діалогового вікна «Запустити з рядка»

QtVCP RunFromLine: Віджет діалогового вікна «Запустити з рядка»
Figure 23. QtVCP RunFromLine: Віджет діалогового вікна «Запустити з рядка»

Діалогове вікно для попереднього встановлення параметрів шпинделя перед запуском програми з певного рядка.

Він базується на QDialog від PyQt.

3.13. VersaProbeDialog - Віджет діалогового вікна дотику до деталі

QtVCP VersaProbeDialog: Віджет діалогового вікна дотику до деталі
Figure 24. QtVCP VersaProbeDialog: Віджет діалогового вікна дотику до деталі

Це діалогове вікно для відображення екрана зондування деталі на основі Verser Probe v2.

Він базується на QDialog від PyQt.

3.14. MachineLogDialog - Віджет діалогового вікна журналів машини та налагодження

QtVCP MachineLogDialog: Віджет діалогового вікна журналів машини та налагодження
Figure 25. QtVCP MachineLogDialog: Віджет діалогового вікна журналів машини та налагодження

Це діалогове вікно для відображення журналу машини та журналу налагодження QtVCP.

Він базується на QDialog від PyQt.

4. Інші віджети

Інші доступні віджети:

4.1. NurbsEditor - Віджет редагування NURBS

QtVCP NurbsEditor: Віджет редагування NURBS
Figure 26. QtVCP NurbsEditor: Віджет редагування NURBS

Редактор NURBS дозволяє вам маніпулювати геометрією на основі NURBS на екрані, а потім конвертувати NURBS у G-код.

Ви можете редагувати G-код на екрані, а потім надіслати його до LinuxCNC.

Він базується на QDialog від PyQt.

4.2. JoyPad - 5-кнопковий віджет D-pad

Це базовий клас для віджета HALPad.

Цей віджет виглядає та працює як 5-кнопковий D-pad зі світлодіодними індикаторами в кільці.

Ви можете розмістити текст або значки в кожній з позицій кнопок.

Ви можете підключитися до вихідних сигналів, натиснувши кнопки.

Також є слоти введення для зміни кольору індикатора(ів).

ENUMS

Існують перелічувані константи, що використовуються для посилання на позиції індикаторів.
Вони використовуються в редакторі властивостей редактора Qt Designer або в коді Python.

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

Для коду обробника Python ви використовуєте назву віджета в Qt Designer плюс константу посилання:

self.w.joypadname.set_highlight(self.w.joypadname.LEFT)
Корисні функції, які можна перевизначити
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)

Згідно з кодом, ці функції issue (випромінюють) сигнали PyQt5 (joy_btn_pressed та joy<літера>_pressed) для будь-якого натискання або відпускання кнопки_.

Сигнал joy_btn_pressed виводить рядковий код для кнопки.
Сигнал joy_<літера>_pressed виводить логічне значення.

Ви можете перевизначити функції, щоб вони виконували щось інше, якщо створюєте власний віджет:

Функції, що викликаються
reset_highlight()

Очищає індикатор виділення.

set_highlight(_button_, state=_True_)

Встановіть індикатор підсвічування в позиції button у стан state.
Ви можете використовувати рядки_літер (LRCTBXA) або позицію ENUMS як аргумент кнопки.

set_button_icon(_button_, _pixmap_)

Встановлює розпізнавальну карту значка кнопки.

set_button_text(_button_, _text_)

Встановлює текст значка кнопки.

set_tooltip(_button_, _text_)

Встановлює описовий текст спливаючої підказки для кнопок.

setLight(_state_)

Встановлює для індикатора підсвічування колір True або False.
Функцію set_highlight() необхідно використовувати перед встановленням індикатора.

Сигнали

Ці сигнали будуть надсилатися при натисканні кнопок.

До них можна підключитися в редакторі Qt Designer або в коді Python.

Перші два виводять рядок, який вказує на натиснуту кнопку:

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)

Вони базуються на Signal від PyQt (QtCore.pyqtSignal())

Слоти

До слотів можна підключитися в редакторі Qt Designer або коді Python:

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

Властивості

Їх можна встановити в таблицях стилів або коді Python:

highlightPosition

Встановіть положення індикатора.

setColorState

Виберіть колірний стан індикатора.

left_image_path
right_image_path
center_image_path
top_image_path
bottom_image_path

Шлях до файлу або ресурсу зображення, яке буде відображатися в зазначеному місці кнопки.
Якщо в редакторі Qt Designer натиснути кнопку «Скинути», зображення не буде відображатися (замість нього можна відобразити текст).

left_text
right_text
center_text
top_text
bottom_text

Текстовий рядок, який буде відображено в описаному місці кнопки.
Якщо залишити поле порожнім, можна призначити зображення для відображення.

true_color
false_color

Вибір кольору для центрального світлодіодного кільця, яке буде відображатися, коли контакт BASENAME.light.center HAL має значення True або False.

text_color

Вибір кольору для тексту кнопки.

button_font

Вибір шрифту для тексту кнопки.

Вищезазначені властивості можна встановити в:

  • Таблиці стилів:
    Зазвичай для встановлення окремих властивостей віджетів використовується ім’я віджета Qt Designer з префіксом #, в іншому випадку для встановлення однакових властивостей для всіх віджетів JoyPad використовується ім’я класу JoyPad:

    #joypadname{
      qproperty-true_color: #000;
      qproperty-false_color: #444;
    }
  • У коді обробника Python:

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

4.3. WebWidget

Цей віджет створить сторінку перегляду html/pdf за допомогою бібліотек QtWebKit або QtWebEngine. Якщо в системі є обидві бібліотеки, краще використовувати нову QtWebEngine.
Якщо бібліотека QtWebEngine використовується з редактором Qt Designer, в Qesigner з’явиться замінник QWidget. Він буде замінений віджетом QtWebEngine під час виконання.

5. Віджети BaseClass/Mixin

Ці віджети використовуються для поєднання різних властивостей та поведінки в інші віджети.

Ви побачите їх як згортальний заголовок у стовпці властивостей Qt Designer.

5.1. IndicatedPushButtons

Цей клас змінює поведінку QPushButton.

5.1.1. Варіант індикатора

indicator_option розміщує «світлодіод» у верхній частині кнопки.

QtVCP IndicatedPushButton: Кнопка дії з індикацією, опція світлодіодного індикатора
Figure 27. QtVCP PushButton: Кнопкова індикація, варіант світлодіодного індикатора

Це може бути трикутник, коло, верхня смуга або бічна смуга.
Світлодіоди трикутник і коло можуть відображати подвійні вертикальні світлодіоди, кожен з яких має власний контакт HAL. + Розмір і положення можна регулювати.

Це вказуватиме:

  • поточний стан кнопки, або

  • стан виводу HAL, або

  • Статус LinuxCNC.

Властивості

Ці властивості доступні для налаштування індикатора (не всі вони застосовні до кожної форми світлодіода):

doubleIndicator

До трикутних або круглих світлодіодів додайте другий вертикальний світлодіод.

on_color
off_color
flashIndicator

Коли індикатор спрацює, світлодіод блимає.

Швидкість спалаху

Частота миготіння

indicator_size

Розмір трикутного світлодіода

circle_diameter

Діаметр круглого світлодіода

shape_option

Тип форми світлодіода 0-4

right_edge_offset

Відстань від правого краю

top_edge_offset

Простір від верхнього краю

height_fraction

Використовується для світлодіодних панелей

width_fraction

Використовується для світлодіодних панелей

corner_radius

Радіус кута індикатора.

Колір світлодіодного індикатора можна визначити в stylesheet за допомогою наступного коду, доданого до файлу .qss:

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

Або для певної кнопки:

Indicated_PushButton #button_estop{
  qproperty-on_color: black;
  qproperty-off_color: yellow;
}
Опції

IndicatedPushButton мають ексклюзивні опції:

indicator_HAL_pin_option

Додає halpin з назвою <buttonname>-led, який керує станом індикатора кнопки.

indicator_status_option

Змушує світлодіод відображати стан цих вибраних статусів LinuxCNC:

  • Зупинено

  • Увімкнено

  • Усі Homed

  • Є спільним житлом

  • Бездіяльність

  • Призупинено

  • Повінь

  • Туман

  • Видалення блоку

  • Додаткова зупинка

  • Керівництво

  • MDI

  • Авто

  • Шпиндель зупинився

  • Шпиндель вперед

  • Зворотний рух шпинделя

  • На межі

Деякі indicator_status_options містять властивість, яку можна використовувати з stylesheet для зміни кольору кнопки залежно від стану властивості в LinuxCNC.
Наразі ці властивості стану можна використовувати для автоматичного стилювання кнопок:

  • is_estopped_status перемикатиме властивість isEstop

  • is_on_status перемикатиме властивість isStateOn

  • is_manual_status, is_mdi_status, is_auto_status перемикатимуть властивості isManual, isMDI, isAuto.

  • is_homed_status вмикає/вимикає властивість isAllHomed

Ось приклад запису таблиці стилів, який встановлює фон віджетів кнопок режиму, коли LinuxCNC перебуває в цьому режимі:

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

Ось як вказати певний віджет за його objectName у Qt Designer:

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

5.1.2. Увімкнено станом LinuxCNC

Часто необхідно вмикати та виключати кнопку залежно від стану контролера руху LinuxCNC.

Є кілька властивостей, які можна вибрати для допомоги в цьому:

isAllHomedSentive
isOnSensitive
isIdleSensitive
isRunSensitive
isRunPausedSensitive
isManSensitive
isMDISensitive
isAutoSensitive

Ви можете вибрати кілька властивостей для об’єднаних вимог.

5.1.3. Зміни тексту щодо стану

Вибір опції checked_state_text_option дозволяє кнопці з можливістю перевірки змінювати текст на основі її позначеного стану.

Він використовує такі властивості для визначення тексту для кожного стану:

true_state_string
false_state_string

\\n буде перетворено на новий рядок.

Ви можете встановити/змінити їх у таблицях стилів:

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

5.1.4. Виклик команд Python у стані

Опція python_command_option дозволяє запускати невеликі фрагменти коду Python одним натисканням кнопки, без необхідності редагування файлу обробника. Однак, вона може викликати функції у файлі обробника.

Під час використання властивостей command_string.

true_python_cmd_string

Команда Python, яка буде викликана, коли значення кнопки перемикається на True.

false_python_cmd_string

Команда Python, яка буде викликана, коли значення кнопки перемикається на False.

Спеціальні слова з великої літери нададуть доступ до наступного:

ПРИМЕР

Надасть доступ до екземплярів віджетів та функцій обробника.
Наприклад, INSTANCE.my_handler_function_call(True)

ДІЯ

Надасть доступ до бібліотеки ACTION QtVCP.
Наприклад, ACTION.TOGGLE_FLOOD()

PROGRAM_LOADER

Надасть доступ до бібліотеки PROGRAM_LOADER QtVCP.
Наприклад, PROGRAM_LOADER.load_halshow()

HAL

Надасть доступ до модуля Python HAL.
Наприклад, HAL.set_p('motion.probe-input','1')

6. Віджети лише для імпорту

Ці віджети зазвичай є базовим класом віджетів для інших віджетів QtVCP.

Вони недоступні безпосередньо з редактора Qt Designer, але їх можна імпортувати та вставити вручну.

Їх також можна розділити на підкласи, щоб створити подібний віджет з новими функціями.

6.1. Автоматична висота

Віджет для вимірювання двох висот за допомогою зонда.
Для налаштування.

6.2. Утиліта G-коду

Віджети для виконання поширених процесів обробки.

6.3. Облицювання

Облицювання QtVCP: Показано з QtDragon

Облицювання плитою або облицюванням визначеної області за допомогою різних стратегій.

6.4. Коло отворів

QtVCP BHC: Показано з QtDragon

Просвердліть кілька отворів по колу для болтів.

6.5. Збільшити отвір

Облицювання QtVCP: Показано з QtDragon

Використовуйте торцеву фрезу для розширення просвердленого отвору.

6.6. Qt NGCGUI

QtVCP NGCGUI: Показано з QtDragon

Версія селектора підпрограм NGC у QtVCP (показано, як використовується в QtDragon).

6.6.1. Налаштування INI

LinuxCNC потрібно знати, де шукати для запуску підпрограм.
Якщо підпрограма викликає інші підпрограми або власні M-коди, ці шляхи також необхідно додати.

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

QtVCP має знати, звідки відкривати підпрограми.
Ви також можете вказати підпрограми, які потрібно попередньо відкрити у вкладках.

[DISPLAY]
# Шлях до підпрограми NGCGUI.
# Цей шлях також повинен бути вказаний в [RS274NGC] SUBROUTINE_PATH
NGCGUI_SUBFILE_PATH = ~/linuxcnc/nc_files/examples/ngcgui_lib
# попередньо вибрані вкладки програм
# вкажіть тільки імена файлів, файли повинні бути в NGCGUI_SUBFILE_PATH
NGCGUI_SUBFILE = slot.ngc
NGCGUI_SUBFILE = qpocket.ngc

6.6.2. Кпонки

  • NEW TAB - додати нову порожню вкладку до NGCGUI

  • SELECT PREAMBLE - виберіть файл, який додає G-код преамбули

  • SELECT SUBFILE - вибрати файл підпрограми NGCGUI

  • SELECT POST - виберіть файл, який додає G-код посту

  • REREAD FILE - перезавантажити файл підпрограми

  • CREATE FEATURE - додати функцію до списку

  • RESTART FEATURE - вилучає всі функції зі списку

  • FINALIZE GCODE - створити повний G-код та надсилати його до файлу LinuxCNC/a

6.6.3. Додавання користувацьких підпрограм

Ви можете створювати власні підпрограми для використання з NGCGUI. Вони повинні відповідати таким правилам:

  • Для створення підпрограми для використання з NGCGUI ім’я файлу та ім’я підпрограми мають збігатися.

  • Підпрограма має знаходитися в папці в межах шляху пошуку INI-файлу LinuxCNC.

  • У першому рядку може бути коментар типу info:

  • Підпрограма має бути оточена тегами sub та endsub.

  • Використані змінні повинні бути пронумерованими змінними та не повинні пропускати номер.

  • Можуть бути включені коментарі та пресети.

  • Якщо в папці є файл зображення з такою ж назвою, він буде відображений.

(info: feedrate -- simple example for setting feedrate)
o<feedrate> sub
    #<feedrate>       = #1 (= 6 Швидкість подачі) ; коментарі в дужках будуть відображатися в ngcui
    f#<feedrate>
o<feedrate> endsub
Користувацький субтитр QtVCP NGCGUI

6.7. Qt PDF

Дозволяє додавати на екран PDF-файли, що можна завантажити.

6.8. Qt Vismach

Використовуйте це для створення/додавання машин, що імітують OpenGl.

6.9. Коробка вибору Hal

Цей віджет являє собою вибраний список, який дозволяє вибрати пін-код або сигнал у системі.

from qtvcp.widgets.hal_selectionbox import HALSelectionBox

    def buildComboBox(self):
        # комбінований список для вибору контактів HAL
        combobox = HALSelectionBox()
        combobox.setShowTypes([combobox.PINS,combobox.SIGNALS])
        combobox.setPinTypes([combobox.HAL_BIT], direction = [combobox.HAL_IN])
        combobox.setSignalTypes([combobox.HAL_BIT], driven = [False,True])
        combobox.hal_init()
        combobox.selectionUpdated.connect(lambda w: self.signalSelected(w))

    def signalSelected(self, sig):
        print('Watching:',sig)

Є виклики функцій

# встановити список типів для відображення з: PINS SIGNALS
combobox.setShowTypes([combobox.PINS])

# встановити типи виводів для відображення: HAL_BIT,HAL_FLOAT,HAL_S32,HAL_U32
# та список напрямків: HAL_IN HAL_OUT
combobox.setPinTypes(types=[combobox.HAL_BIT], direction = [HAL_IN])

# встановити типи сигналів для відображення: HAL_BIT,HAL_FLOAT,HAL_S32,HAL_U32
# та список керованих/некерованих (підключеним виводом) для відображення
combobox.setSignalTypes( types=[combobox.HAL_BIT], driven = [True,True])