Сделать цикл по QLineEdit и получить данные в список
Подскажите как можно выхватить данные строк, которые находятся внутри класса.
Имеется много полей QLineEdit и нужно получить из них данные в список.
В примере кода нужно циклом (?) пробежаться по объектам le902, le903, le904 и в итоге должен получиться список с данными [16, 17, 18].
self.le902 = QtWidgets.QLineEdit(self.gridLayoutWidget_2)
self.le902.setText("16")
self.le902.setObjectName("le902")
self.gridLayout_2.addWidget(self.le902, 1, 0, 1, 1)
self.le903 = QtWidgets.QLineEdit(self.gridLayoutWidget_2)
self.le903.setText("17")
self.le903.setObjectName("le903")
self.gridLayout_2.addWidget(self.le903, 3, 0, 1, 1)
self.le904 = QtWidgets.QLineEdit(self.gridLayoutWidget_2)
self.le904.setText("18")
self.le904.setObjectName("le904")
self.gridLayout_2.addWidget(self.le904, 3, 0, 1, 1)
Ответы (2 шт):
Автор решения: S. Nick
→ Ссылка
Пожалуйста всегда предоставляйте минимально-воспроизводимый приме.
Можно по разному, например создать список.
import sys
from PyQt5.Qt import *
from PyQt5 import QtCore, QtWidgets
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
central_widget = QWidget()
self.setCentralWidget(central_widget)
self.lineEdit_list = [] # +++
self.widget = QWidget()
self.gridLayout_2 = QGridLayout(self.widget)
self.le902 = QtWidgets.QLineEdit()
self.le902.setText("16")
self.le902.setObjectName("le902")
self.lineEdit_list.append(self.le902) # +++
self.gridLayout_2.addWidget(self.le902, 1, 0, 1, 1)
self.le903 = QtWidgets.QLineEdit()
self.le903.setText("17")
self.le903.setObjectName("le903")
self.lineEdit_list.append(self.le903) # +++
self.gridLayout_2.addWidget(self.le903, 2, 0, 1, 1)
self.le904 = QtWidgets.QLineEdit()
self.le904.setText("18")
self.le904.setObjectName("le904")
self.lineEdit_list.append(self.le904) # +++
self.gridLayout_2.addWidget(self.le904, 3, 0, 1, 1)
self.label = QLabel()
self.pushButton = QtWidgets.QPushButton('Получить данные в список.')
self.pushButton.clicked.connect(self.get_list)
main_layout = QVBoxLayout(central_widget)
main_layout.addWidget(self.label)
main_layout.addWidget(self.widget)
main_layout.addWidget(self.pushButton)
def get_list(self):
_list = [lineEdit.text() for lineEdit in self.lineEdit_list] # +++
self.label.setText(str(_list))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
Автор решения: gil9red
→ Ссылка
Можно виджеты найти через метод findChildren
Пример:
import sys
from PyQt5.Qt import *
from PyQt5 import QtCore, QtWidgets
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
central_widget = QWidget()
self.setCentralWidget(central_widget)
self.widget = QWidget()
self.gridLayout_2 = QGridLayout(self.widget)
self.le902 = QtWidgets.QLineEdit()
self.le902.setText("16")
self.le902.setObjectName("le902")
self.gridLayout_2.addWidget(self.le902, 1, 0, 1, 1)
self.le903 = QtWidgets.QLineEdit()
self.le903.setText("17")
self.le903.setObjectName("le903")
self.gridLayout_2.addWidget(self.le903, 2, 0, 1, 1)
self.le904 = QtWidgets.QLineEdit()
self.le904.setText("18")
self.le904.setObjectName("le904")
self.gridLayout_2.addWidget(self.le904, 3, 0, 1, 1)
self.label = QLabel()
self.pushButton = QtWidgets.QPushButton('Получить данные в список.')
self.pushButton.clicked.connect(self.get_list)
main_layout = QVBoxLayout(central_widget)
main_layout.addWidget(self.label)
main_layout.addWidget(self.widget)
main_layout.addWidget(self.pushButton)
def get_list(self):
items = [lineEdit.text() for lineEdit in self.findChildren(QtWidgets.QLineEdit)] # +++
self.label.setText(str(items))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
