Форум
подписаться на последние сообщения:
|
|
Добрые питоняне! Есть ли помимо функции lambda другие способы передать параметры через QtCore.SIGNAL()?
QtCore.QObject.connect(timer, QtCore.SIGNAL('timeout()'), lambda : refresh_components(mainapp, c))
... и еще вопрос - есть у меня три кнопки (QPushButton), описанные в модуле, генерируемом дизайнером. В дальнейшем мне может понадобиться динамически добавлять к ним в verticalLayout кнопки с такими же визуальными свойствами, stylesheet'ами, сигналами и прочим. Как лучше всего это осуществить?
Спасибо.
|
|
|
можно и без лямбды, через def :D
|
|
|
Дак через def ошибку пишет. ты пробовал?
|
|
|
l1eri, нет не пробовал, интересно вообще с этими вызовами функции с параметрами сплошь косяки, у меня, на пример работает так:
, но не работает так:
|
|
|
zubchick, насколько я знаю lambda пишется без знака равенства. Вот так button.clicked.connect(lambda val: self.add_block(val))
|
|
|
Можно и без лямбды, например назначив обработчиком метод а в самом методе заюзать свойство в качестве параметра.
(http://www.demoriz.ru/?p=67)
|
|
|
насколько я знаю lambda пишется без знака равенства Это дефолтное значение, как и в обычной функции.
Коннектить сигнал можно только к вызываемым объектам (или к слотам). С обычными функциями бывают ошибки, когда gc не видит, что она ещё используется в qt и удаляет. С лямбдой таких проблем нет. Я долго бился, чтобы понять причину, но так и не разобрался.
Ребят, вы используете старый стиль PyQt. Я давно на нём ничего не писал, но куда правильнее будет писать как-то так:
self.lineEdit.returnPressed.connect(self.find)
|
|
|
>Ребят, вы используете старый стиль PyQt. Я давно на нём ничего не писал, но куда правильнее будет писать как-то так: >self.lineEdit.returnPressed.connect(self.find)
Очень интересно, поделитесь ссылочкой на описание нового стиля? А то по PyQT вообще както бедно в плане документации, ачтоб на русском так вообще мрак. Или я просто искать не умею? :)
|
|
|
Помогите, не пойму в чем загвоздка. В коде
def pushpButton(self, objName):
print objName
...
pButtons = []
for i in range (0, max_col):
for j in range (0, max_row):
s = 'pushButton_'+str(i+1)+'_'+str(j+1)
pButtons.append(mainapp.findChild(QtGui.QPushButton,s))
for button in pButtons:
button.clicked.connect(lambda: mainapp.pushpButton(button.objectName()))
pushpButton() всегда!! выдает имя последней кнопки, в не зависимости от того, на какую из них я бы не нажал. Будто все сигналы привязались к последней, хотя в списке pButtons ссылки идут на разные адреса.
|
|