PyQt: есть ли лучший способ установить objectName в коде? - PullRequest
0 голосов
/ 06 июня 2018

Когда вы используете Qt_Designer или Qt_Creator для разработки формы, objectName для любого заданного виджета всегда устанавливается на что-то.Но если вы создаете виджет в коде AND, а позже вам понадобится objectName, вы должны назначить его явно.Таким образом, назначение виджета занимает как минимум две строки кода.Это выглядит очень не элегантно.

Пример:

button1 = QPushButton('button caption')   # at this point objectName is some kind of empty string
button1.setObjectName('button1')

Если вам нужно найти виджет позже (например, с помощью findChild), вы должны установить objectName, иначе вам не повезло.

Есть ли способ автоматической установки objectName без лишних строк кода?Я посмотрел справочное руководство PyQt5 и не смог найти такую ​​функцию. аналогичный вопрос был задан на Code Review, но не получил ответов.Две строки кода не конец света, но это кажется излишним.Каким-то образом мне нужно присвоить это имя дважды один раз для Python (первая строка) и снова для Qt.

1 Ответ

0 голосов
/ 07 июня 2018
button1 = QPushButton('button caption', objectName='button1')

Вы можете распространить это на любое свойство Qt во время инициализации:

button1 = QPushButton(text='button caption', objectName='button1', icon=icon1)

Кроме того, сигналы могут быть подключены и при построении объекта:

button1 = QPushButton(text='button caption', objectName='button1', clicked=someMethod)

ДобавленныйИменованный аргумент эквивалентен button1.clicked.connect(someMethod)

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