PyQt вводит несколько значений в одну строку

Я хочу, чтобы пользователь вводил серию значений, разделенных пробелами (или запятыми), в одном текстовом редакторе или любом другом виджете ввода в PyQt. тогда я хотел бы иметь возможность использовать эти значения в расчетах. Пожалуйста, посмотрите картинку, которая показывает пример того, что я пытаюсь сделать.

PyQt вводит несколько значений в одну строку

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
828
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

from PyQt5 import QtCore, QtGui, QtWidgets

class Widget(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super(Widget, self).__init__(parent)
        flay = QtWidgets.QFormLayout(self)

        regex = r"^(\s*(-|\+)?\d+(?:\.\d+)?\s*,\s*)+(-|\+)?\d+(?:\.\d+)?\s*$"
        validator = QtGui.QRegExpValidator(QtCore.QRegExp(regex), self)
        self._le = QtWidgets.QLineEdit()
        self._le.setValidator(validator)

        self._list_widget = QtWidgets.QListWidget()

        button = QtWidgets.QPushButton("Press me")
        button.clicked.connect(self.on_clicked)

        self._result_label = QtWidgets.QLabel(alignment=QtCore.Qt.AlignCenter)

        flay.addRow("Input: ", self._le)
        flay.addRow("Output: ", self._list_widget)
        flay.addRow("Sum of values: ", self._result_label)
        flay.addRow(button)

    @QtCore.pyqtSlot()
    def on_clicked(self):
        self._list_widget.clear()
        if self._le.text():
            values = [float(val) for val in self._le.text().split(",")]
            print(values)
            self._list_widget.addItems([str(val) for val in values])
            self._result_label.setText(str(sum(values)))

if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    w = Widget()
    w.show()
    sys.exit(app.exec_())

Другие вопросы по теме