def addTextInput(self, question, callback, visible=True): text_input = QLineEdit() self.form.addRow(question, text_input) def texthandler(): text = unicode(text_input.text()) if visible: #don't alter what you can't see text = text.strip() text_input.setText(text) callback(text) if unicode(text) != text_input.default_value or len(text_input.default_value) == 0: self.signalModified() def setDefaultText(value): text_input.default_value = value text_input.setText(value) def maybemodified(qstring): if unicode(qstring) != text_input.default_value: self.signalModified() text_input.setDefaultText = setDefaultText text_input.default_value = '' self.connect(text_input, SIGNAL('editingFinished()'), texthandler) # self.connect(text_input, SIGNAL('textChanged(QString)'), maybemodified) if not visible: text_input.setEchoMode(QLineEdit.Password) return text_input