Форум сайта python.su
Система слотов и сигналов Qt4 ломает мозг.
У меня по нажатию на ентер в QLineEdit вызывается метод addItem(self, text)
нужно как то передать туда эти два параметра, не могу понять как.
Мой код:
def createFormGroupBox(self):
global addNew
addNew = QtGui.QLineEdit()
self.connect(addNew, SIGNAL("returnPressed()"), Dialog.addItem) #TypeError: addItem() takes exactly 2 arguments (0 given)
layout.addRow(QtGui.QLabel("Add new:"), addNew)
...
class Dialog(QtGui.QDialog):
bigEditor = None
dialog = None
addNew = None
def addItem(self, text): #TypeError: addItem() takes exactly 2 arguments (0 given)
print('add ' + text)
qtItem = QtGui.QListWidgetItem(self.bigEditor)
qtItem.setText(text)
def __init__(self):
self.bigEditor = QtGui.QListWidget()
Офлайн
Ничего она не ломает) просто надо подойти к ней не с хвоста, а с головы)
Как я понимаю у вас тут из одного окна передаются данные в диалог?
returnPressed() не передает в функцию никаких параметров. И в этом случае нам поможет lambda
self.connect(addNew, SIGNAL("returnPressed()"), lambda: dlg.addItem(addNew.text()))
self.connect(addNew, SIGNAL("returnPressed()"), self.rtnPressed)
def rtnPressed(self):
self.dlg.addItem(addNew.text())
self.connect(addNew, SIGNAL("returnPressed()"), self.rtnPressed)
addNew.returnPressed.connect(self.rtnPressed)
Офлайн
Спасибо!
self.connect(addNew, SIGNAL(“returnPressed()”), lambda: self.addItem(addNew.text()))
помогло, именно то, что я искал. В java\swing оно аналогичным образом делается.
Я позже покажу сорцы, когда будет что показать
Офлайн