Можно ли перебрать все объекты QObject в интерфейсе PyQt5?

У меня есть программа, которую я пытаюсь немного очистить, потому что думаю, что у меня есть некоторые повторяющиеся части, которые, возможно, можно было бы упростить. Например, у меня есть кнопка, которая при нажатии выполняет несколько вычислений, все в отдельных функциях, и каждая возвращает значение. Затем у меня есть длинные сегменты, где я просто присваиваю значение элементу виджета, поэтому раздел будет выглядеть так:

self.label_1.setText("1")
self.label_2.setText("2")
self.label_3.setText("3")
self.label_4.setText("4")

и так далее. То, что я хотел бы сделать: имея значения, которые будут помещены в настройку этих виджетов, в список или словарь, я могу выполнять итерацию по списку / дикту, а также перебирать все доступные виджеты и помещать соответствующее значение в соответствующий виджет. Если это возможно, возможно, это будет выглядеть примерно так:

scores = {'s1': 100, 's2':90, 's3': 80, 's4': 70}

for key in scores:
    for widget in My_PyQt5_Interface.QtWidgets:
        if widget.objectName() == key:
            widget.setText(scores[key])

Я уже писал такие вещи, например, в VBA, например, когда вы перебираете все объекты 'shape' на рабочем листе и можете выполнять некоторые действия и т.д. на каждом из них, поэтому я думаю, что это было бы возможно здесь, я просто не уверен, что синтаксис должен быть.

0 ответов

Другие вопросы по тегам