Освоение PyQt5: различные методы обработки ввода с плавающей запятой

В PyQt5 обработка ввода с плавающей запятой требует тщательной проверки, чтобы гарантировать, что принимаются только допустимые числа с плавающей запятой. В этой статье блога мы рассмотрим различные методы обработки ввода с плавающей запятой в PyQt5, а также примеры кода и разговорные объяснения.

Метод 1: использование виджета QLineEdit и средства проверки регулярных выражений
Пример кода:

from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QLineEdit, QValidator
from PyQt5.QtGui import QDoubleValidator
import sys
class FloatInputWidget(QWidget):
    def __init__(self):
        super().__init__()
        self.layout = QVBoxLayout()
        self.label = QLabel("Enter a floating-point number:")
        self.line_edit = QLineEdit()
        self.validator = QDoubleValidator()
        self.line_edit.setValidator(self.validator)
        self.layout.addWidget(self.label)
        self.layout.addWidget(self.line_edit)
        self.setLayout(self.layout)
app = QApplication(sys.argv)
widget = FloatInputWidget()
widget.show()
sys.exit(app.exec_())

Объяснение:
В этом методе мы используем виджет QLineEditдля приема пользовательского ввода. Мы установили QDoubleValidatorв качестве средства проверки для виджета QLineEdit, что гарантирует принятие только допустимых чисел с плавающей запятой. QDoubleValidatorвыполняет проверку на основе шаблона регулярного выражения.

Метод 2: использование SpinBox со значениями с плавающей запятой
Пример кода:

from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QDoubleSpinBox
import sys
class FloatInputWidget(QWidget):
    def __init__(self):
        super().__init__()
        self.layout = QVBoxLayout()
        self.label = QLabel("Select a floating-point number:")
        self.spin_box = QDoubleSpinBox()
        self.spin_box.setDecimals(2)  # Set the number of decimal places
        self.layout.addWidget(self.label)
        self.layout.addWidget(self.spin_box)
        self.setLayout(self.layout)
app = QApplication(sys.argv)
widget = FloatInputWidget()
widget.show()
sys.exit(app.exec_())

Объяснение:
В этом методе мы используем виджет QDoubleSpinBox, чтобы предоставить интерфейс счетчика для ввода с плавающей запятой. Установив метод setDecimals(), мы можем указать допустимое количество десятичных знаков. Поле счетчика автоматически обрабатывает проверку ввода и гарантирует, что принимаются только допустимые значения с плавающей запятой.

Метод 3. Использование пользовательского диалогового окна ввода с проверкой
Пример кода:

from PyQt5.QtWidgets import QApplication, QDialog, QVBoxLayout, QLabel, QLineEdit, QDialogButtonBox, QDoubleValidator
from PyQt5.QtCore import Qt
import sys
class FloatInputDialog(QDialog):
    def __init__(self):
        super().__init__()
        self.layout = QVBoxLayout()
        self.label = QLabel("Enter a floating-point number:")
        self.line_edit = QLineEdit()
        self.validator = QDoubleValidator()
        self.line_edit.setValidator(self.validator)
        self.button_box = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel)
        self.button_box.accepted.connect(self.accept)
        self.button_box.rejected.connect(self.reject)
        self.layout.addWidget(self.label)
        self.layout.addWidget(self.line_edit)
        self.layout.addWidget(self.button_box)
        self.setLayout(self.layout)
        self.setWindowFlags(self.windowFlags() & ~Qt.WindowContextHelpButtonHint)
app = QApplication(sys.argv)
dialog = FloatInputDialog()
if dialog.exec_() == QDialog.Accepted:
    float_input = float(dialog.line_edit.text())
    print("Float input:", float_input)
sys.exit()

Объяснение:
В этом методе мы создаем настраиваемое диалоговое окно ввода с помощью виджета QDialog. Диалоговое окно содержит виджет QLineEditдля ввода с плавающей запятой и QDialogButtonBoxс кнопками «ОК» и «Отмена». Мы установили QDoubleValidatorв качестве валидатора для виджета редактирования строки, чтобы гарантировать, что принимаются только действительные значения с плавающей запятой. Диалоговое окно ввода обеспечивает более гибкий подход к обработке ввода с плавающей запятой и дополнительные параметры настройки.

Обработка ввода с плавающей запятой в PyQt5 требует надлежащей проверки, чтобы гарантировать, что принимаются только действительные числа с плавающей запятой. В этой статье мы рассмотрели три различных метода: использование виджета QLineEditс проверкой регулярных выражений, использование QDoubleSpinBoxи создание пользовательского диалога ввода. Каждый метод имеет свои преимущества, и выбор зависит от конкретных требований вашего приложения.

Реализуя эти методы, вы можете улучшить взаимодействие с пользователем и обеспечить точный ввод данных с плавающей запятой в ваших приложениях PyQt5.