Pyqt5 l oop для переменных класса и изменения состояния / заданных значений - PullRequest
0 голосов
/ 05 января 2020

У меня есть класс с определенным номером переменной класса. Переменные бывают разных типов, например QLineEdit/QCheckbox .... et c. Как я могу l oop над переменной класса, чтобы установить значение переменной, как показано ниже:

obj   = FindObj()
value = ['100', 'yes', 'False']
i=0 
for variable in obj:
    if variable.__class__() == 'QLineEdit': # Don't know if it's right
        variable.setText(value[i])
        i=i+1
    elif variable.__class__() == 'QCheckBox':
        variable.setChecked(value[i])
        i=i+1

import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QIcon


class FindObj():

    def __init__(self):
        super().__init__()

        self.l1 = QLineEdit()
        self.l2 = QLineEdit()
        self.l3 = QCheckBox()

if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = FindObj()
    sys.exit(app.exec_())

1 Ответ

1 голос
/ 05 января 2020

Если вы также поместите свои переменные в список, вы можете l oop по обоим спискам:

class FindObj():

    def __init__(self):

        self.l1 = QLineEdit()
        self.l2 = QLineEdit()
        self.l3 = QCheckBox()

        self.variables = [self.l1, self.l2, self.l3]

Теперь вы можете l oop по ним:

obj   = FindObj()
values = ['100', 'yes', 'False']
for variable, value in zip(obj.variables, values):
    if variable.__class__.__name__ == 'QLineEdit': 
        variable.setText(value)
    elif variable.__class__.__name__ == 'QCheckBox':
        variable.setChecked(value)
...