Я ищу способ получить заданное число c виджеты в этом случае `Виджеты Qlabels в макете Я нашел этот ответ Как использовать findChildren? и использовал его для своей функции
def find_qlabels(self):
self.myQListWidget = QtWidgets.QListWidget()
listsMyQLabels = self.gridlayout.findChildren(QtWidgets.QLabel)
for myQLineEdit in listsMyQLabels:
self.myQListWidget.addItem(str(myQLineEdit))
#for labels in self.myQListWidget:
# self.label_list.append(labels)
ссылка на QLabelWidgets должна храниться в self.myQListWidget
, но как мне получить доступ к элементам, например, сохранить их в списке?
есть ответ для этой итерации по QListWidget , но в c ++
вот некоторый тест-код с метками
import sys
from PyQt5 import QtWidgets
from PyQt5 import QtCore
from PyQt5 import QtGui
# https://stackoverflow.com/questions/25164853/how-to-use-findchildren
class TestWindow(QtWidgets.QWidget):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.showlabels_button = QtWidgets.QPushButton("show labels")
self.button2 = QtWidgets.QPushButton("Button2")
label1 = QtWidgets.QLabel("Label 1")
label2 = QtWidgets.QLabel("Label 2")
label3 = QtWidgets.QLabel("Label 3")
self.gridlayout = QtWidgets.QGridLayout()
self.gridlayout.addWidget(self.showlabels_button, 0, 0)
self.gridlayout.addWidget(self.button2, 1, 0)
self.gridlayout.addWidget(label1, 2, 0)
self.gridlayout.addWidget(label2, 3, 0)
self.gridlayout.addWidget(label3, 4, 0)
# find children
# save in list
self.label_list = []
self.setLayout(self.gridlayout)
self.showlabels_button.clicked.connect(self.find_qlabels)
self.show()
def find_qlabels(self):
self.myQListWidget = QtWidgets.QListWidget()
listsMyQLabels = self.gridlayout.findChildren(QtWidgets.QLabel)
for myQLineEdit in listsMyQLabels:
self.myQListWidget.addItem(str(myQLineEdit))
#for labels in self.myQListWidget:
# self.label_list.append(labels)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
w = TestWindow()
sys.exit(app.exec_())