В 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.