ctrl_panel: Fix editing fields with unit "°C"

A faulty regular expression within PyQtGraph causes any Parameter with a
suffix that doesn't begin with an alphanumeric character (as matched
with \w) to act abnormally. For instance, entering "100 °C" into the
input boxes gets interpreted as 10 °C.

Patch the FLOAT_REGEX in PyQtGraph to simply match for any character in
the suffix group.
This commit is contained in:
atse 2024-07-30 13:31:42 +08:00
parent 07095d77c8
commit 0f768f30e8
1 changed files with 9 additions and 0 deletions

View File

@ -1,3 +1,5 @@
import re
from PyQt6.QtCore import QSignalBlocker from PyQt6.QtCore import QSignalBlocker
from PyQt6.QtGui import QValidator from PyQt6.QtGui import QValidator
@ -7,6 +9,13 @@ from pyqtgraph.parametertree import registerParameterItemType
from pyqtgraph.parametertree.parameterTypes import SimpleParameter, NumericParameterItem from pyqtgraph.parametertree.parameterTypes import SimpleParameter, NumericParameterItem
# See https://github.com/pyqtgraph/pyqtgraph/issues/3115
fn.FLOAT_REGEX = re.compile(
r"(?P<number>[+-]?((((\d+(\.\d*)?)|(\d*\.\d+))([eE][+-]?\d+)?)|((?i:nan)|(inf))))\s*"
+ r"((?P<siPrefix>[u" + fn.SI_PREFIXES + r"]?)(?P<suffix>.*))?$"
)
class LockableUnitSpinBox(SpinBox): class LockableUnitSpinBox(SpinBox):
""" """
Extension of PyQtGraph's SpinBox widget. Extension of PyQtGraph's SpinBox widget.