Поместите объекты Qt из QtCreator в список Python - PullRequest
0 голосов
/ 31 марта 2020

У меня есть QtWidget, встроенный в QtCreator. Допустим, в виджете есть 10 QLineEdits с именами от Edit0 до Edit9. Данные, которые должны go, хранятся в Python списке data. Есть ли способ поместить эти 10 QLineEdits в список Python, чтобы я мог в основном назначить их значения как:

for index in range(len(data)):
    Edit[index].setText('{:.2}'.format(data[index]))

1 Ответ

0 голосов
/ 31 марта 2020

Поскольку вы используете python, вы можете получить доступ к полям через строку:

for index in range(len(data)):
    getattr(ui, f"Edit{index}").setText('{:.2}'.format(data[index]))

Но полагаться на имя - это уродливый стиль.

Вы также можете выполнять итерации по макет, который содержит правки. Здесь , как это сделать в C ++, имена методов такие же, как в python. Но это становится уродливым, если вы хотите добавить что-то еще в макет, например, Button.

Ни один из этих методов не масштабируется. Если у вас есть много правок в фиксированном шаблоне, вам следует подумать о том, чтобы создать их самостоятельно с помощью своего кода и поместить их в список в первую очередь.

edits = []
for index in range(42):
    edit = QLineEdit()
    edits.append(edit)
    ui.some_layout.addWidget(edit)  # add edit to the layout

# later:   
for edit, data in zip(edits, data):
    edit.setText('{:.2}'.format(data[index]))

Однако мне кажется, что вы строите стол. Знаете ли вы QListWidget, QTableWidget, QListView и QTableView?

...