Форум сайта python.su
При попытке передать аргумент возникает ошибка. Что она означает? Как решить проблему?
> 1
> 2
> 1
class Test(QtGui.QWidget): def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.button = QtGui.QPushButton('') self.button.setShortcut(QtGui.QKeySequence(QtCore.Qt.Key_E)) self.button.setMaximumSize(100,100) self.key = 'G' print 1 self.connect(self.button, QtCore.SIGNAL('clicked()'), self.test(self.key)) def test(self,key): items[key].amount += 1 print 2
QObject.connect(QObject, SIGNAL(), QObject, SLOT(), Qt.ConnectionType=Qt.AutoConnection): argument 3 has unexpected type 'NoneType' QObject.connect(QObject, SIGNAL(), callable, Qt.ConnectionType=Qt.AutoConnection): argument 3 has unexpected type 'NoneType' QObject.connect(QObject, SIGNAL(), SLOT(), Qt.ConnectionType=Qt.AutoConnection): argument 3 has unexpected type 'NoneType'
Отредактировано Guljaca (Сен. 1, 2012 13:05:42)
Офлайн
попробуй после print 2 поставить return 2
Офлайн
py.user.next
попробуй после print 2 поставить return 2
Офлайн
Сейчас же доступен новый синтаксис сигналов и слотов.
self.button.clicked.connect(self.test)
self.connect(self.button, QtCore.SIGNAL('clicked()'), self.test(self.key)) #Тут ты передаешь не слот в кач-ве аргумента, а результат выполнения функции self.test Т.К она не чего не возвращает третьим аргументов передается None, и выскакивает ошибка что вызов функции не совпадает не с одним из перегруженных методов.
Офлайн
mironich
Можешь воспользоваться QGroupButton, там в сигнале клика передается ID кнопки который можно при добавлении кнопки задать.
class Window(QtGui.QWidget): def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.hbox = QtGui.QHBoxLayout() self.bGroup = QtGui.QButtonGroup() self.button = QtGui.QPushButton()
self.bGroup.addButton(self.button,1)
self.connect(self.bGroup, QtCore.SIGNAL('buttonClicked(int)'), self.func) self.hbox.addLayout(self.bGroup) self.setLayout(self.hbox) def func(self.key): pass
Отредактировано Guljaca (Сен. 2, 2012 00:50:00)
Офлайн
class Window(QtGui.QWidget): def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.hbox = QtGui.QHBoxLayout() self.bGroup = QtGui.QButtonGroup() self.button = QtGui.QPushButton() self.bGroup.addButton(self.button,1) self.bGroup.buttonClicked.connect(self.func) def func(self, key): print key
def func(self.key): #Вместо self.key, self, key
Отредактировано mironich (Сен. 2, 2012 01:47:56)
Офлайн
GuljacaНу как обычно ты это делаешь, этот виджет отвечает только за группировку кнопок, дабы удобо было обращаться к ним по ID, и отлавливать клики. и пр., остальное через слои например(разместить).
Как добавить/отобразить группу кнопок в окне?
Офлайн
mironichДописал как обычно
Ну как обычно ты это делаешь, этот виджет отвечает только за группировку кнопок, дабы удобо было обращаться к ним по ID, и отлавливать клики. и пр., остальное через слои например(разместить).
self.hbox.addWidget(self.button) self.setLayout(self.hbox)
<PyQt4.QtGui.QPushButton object at 0x00000000038541E0>
Отредактировано Guljaca (Сен. 2, 2012 02:35:22)
Офлайн
Еще варианты:
http://python.su/forum/post/91686/
import functools self.button.clicked.connect(functools.partial(self.test, "G"))
self.button.clicked.connect(lambda : self.test("G"))
Офлайн