PSA: Please use new style Qt signals and slots not the old style
Don’t do this:
self.connect(self.widget, SIGNAL("valueChanged(int)"), self.valuechanged)
It’s the old way, the crappy way. It’s prone to error and typing mistakes. And who really wants to be typing strings as functions and arg names in it. Gross.
Do this:
self.widget.valueChanged.connect(self.valuechanged) self.widget.valueChanged[str].connect(self.valuechanged)
Much nicer. Cleaner. Looks and feels like Python not some mash up between C++ and Python. The int
argument is the default so it will use that. If you to pick the signal type you can use [type]
.
Don’t do this:
self.emit(SIGNAL("changed()", value1, value2))
Do this
class MyType(QObject): changed = pyqtSignal(str, int) def stuff(self): self.changed.emit(value1, value2)
pyqtSignal
is a type you can use to define you signal. It will come with type checking, if you don’t want type checking just do pyqtSignal(object)
.
Please think of the poor kittens before using the old style in your code.
Filed under: pyqt, python, qgis Tagged: pyqt, qgis, qt