как перебрать QListWidget в pyqt - PullRequest
0 голосов
/ 01 апреля 2020

Я ищу способ получить заданное число 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_())



Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...