В общем, идея состоит в том, чтобы использовать 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_())
![enter image description here](https://i.stack.imgur.com/FTejT.png)