How to let the user re-position a custom widget in pyqt5

The app has a room and several sensors to get the temperature and humidity etc. but the position of sensor is not fixed. It is in a different project, different room and different sensor position. So I have to build a configure view to let the user re-position them. I read some code about drag and drop, but none of them about a custom widget(combined by 2 textLabels and 1 QPixMap label). The code can't work on the custom widget

enter image description here

from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import QWidget, QLabel, QVBoxLayout, QApplication, QHBoxLayout

from dao.data import get_HT


class Sensor(QWidget):
    def __init__(self, parent=None):
        super(Sensor, self).__init__(parent)
        self.setupUI()

    def setupUI(self):
        text1 = "Temperature: {0:.2f} ℃".format(get_HT()[0])
        label1 = QLabel(text1)
        #
        label2 = QLabel("Humid: {0:.2f} %RH".format(get_HT()[1]))

        label3 = QLabel()
        label3.setPixmap(QPixmap("../images/HT_sensor.png"))

        vlayout = QVBoxLayout()
        vlayout.addStretch(0)
        vlayout.addWidget(label1)
        vlayout.addWidget(label2)
        vlayout.addWidget(label3)

        hlayout = QHBoxLayout()
        hlayout.addStretch(2)
        hlayout.addLayout(vlayout)
        hlayout.addStretch(2)
        self.setLayout(hlayout)


class room(QWidget):
    """
    """

    def __init__(self, parent=None):
        super(room, self).__init__(parent)
        self.setAcceptDrops(True)
        self.setupUI()

    def setupUI(self):
        label3 = QLabel()
        label3.setPixmap(QPixmap("../images/5.jpg"))

        layout = QVBoxLayout()
        layout.addWidget(label3)
        self.setLayout(layout)


class Example(QWidget):
    def __init__(self, parent=None):
        super(Example, self).__init__(parent)
        self.initUI()

    def initUI(self):
        w1 = room()
        w2 = Sensor()
        w3 = Sensor()

        vlayout = QVBoxLayout()
        vlayout.addWidget(w1)
        vlayout.addWidget(w2)
        vlayout.addWidget(w3)

        self.setLayout(vlayout)


if __name__ == '__main__':
    import sys

    app = QApplication(sys.argv)
    frm = Example()
    frm.show()
    sys.exit(app.exec())