Форум сайта python.su
ребята, я догадываюсь, что я чего-то где- то недочитал, но у меня горят сроки!
Кто-нибудь может вкратце рассказать, как повесить на кнопку вызов функции с параметром в PyQt?
(вкратце суть проблемы: у меня динамически создаются кнопочки, при нажатии на эти кнопочки отображается графический объект, а так же создается экземпляр класса, закрепленного за этой кнопочкой. Так вот, при нажатии на кнопку, должна вызываться функция с параметром, а параметром является этот класс, от которого нужно создать экземпляр)
целиком весь код, если что. Тык
Отредактировано (Май 20, 2010 11:56:13)
Офлайн
как-то так
button1.clicked.connect(lambda val=12345: self.testfunc(val))
button2.clicked.connect(lambda val=54321: self.testfunc(val))
Офлайн
прикольно с лямбдой придумано :)
Офлайн
for key, value in block_dict.items():
...
button = QtGui.QPushButton()
button.setIcon(QtGui.QIcon(value.image))
button.setIconSize(QtCore.QSize(30, 30))
button.setStatusTip(value.doc)
button.clicked.connect(lambda : self.add_block(value))
Офлайн
я не зря написал "lambda val=54321: self.testfunc(val)"
Офлайн
то есть val должен быть жестко задан или что? Просто в таком случае, value вообще не присваивается
вот весь код
for key, value in block_dict.items():
...
button.clicked.connect(lambda val = value: self.add_block(val))
...
def add_block(self, BlockClass):
item = IBlock(QtGui.QPixmap(BlockClass.image), None, self.scene)
...
Traceback (most recent call last):
File "forms/MainForm.py", line 175, in <lambda>
button.clicked.connect(lambda val = value: self.add_block(val))
File "forms/MainForm.py", line 184, in add_block
item = IBlock(QtGui.QPixmap(BlockClass.image), None, self.scene)
AttributeError: 'bool' object has no attribute 'image'
Отредактировано (Май 20, 2010 10:13:32)
Офлайн
Бррр. Кроме как влепить assert на проверку типа value перед button.clicked.connect идей нет.
Офлайн
да я делал все ок, value вообще меняется тока 1н раз в начале цикла, а при клике на кнопку берется какое-то непонятное значение. Тут Qt чего-то мутит воду, нужен кто-то кто хорошо знает его тонкости :)
целиком весь код, если что. Тык
Отредактировано (Май 20, 2010 11:54:09)
Офлайн
Смотрел исходник. Почему-то не нашел вызов set_blocks.
Офлайн
он в другом модуле потому что :)
http://bitbucket.org/zubchick/madmodeller/src/77971723ddca/madmodeller.py
Офлайн