Hi I want to drag and drop push multiple push buttons but its working for only for last button. And I want to connect them by a wire.
Please help. import sys from PyQt4 import QtGui, QtCore class Button(QtGui.QPushButton): def mouseMoveEvent(self, e): if e.buttons() != QtCore.Qt.RightButton: return mimeData = QtCore.QMimeData() mimeData.setText('%d,%d' % (e.x(), e.y())) pixmap = QtGui.QPixmap.grabWidget(self) painter = QtGui.QPainter(pixmap) painter.setCompositionMode(painter.CompositionMode_DestinationIn) painter.fillRect(pixmap.rect(), QtGui.QColor(0, 0, 0, 127)) painter.end() drag = QtGui.QDrag(self) drag.setMimeData(mimeData) drag.setPixmap(pixmap) drag.setHotSpot(e.pos()) if drag.exec_(QtCore.Qt.CopyAction & QtCore.Qt.MoveAction) == QtCore.Qt.MoveAction: print 'moved' else: print 'copied' def mousePressEvent(self, e): QtGui.QPushButton.mousePressEvent(self, e) if e.button() == QtCore.Qt.LeftButton: print 'press' class Example(QtGui.QWidget): def __init__(self): super(Example, self).__init__() self.initUI() def initUI(self): self.setAcceptDrops(True) button = Button('Button', self) button1 = Button('Button1', self) button.move(100, 65) button1.move(200, 65) self.buttons = [button] self.setWindowTitle('Copy or Move') self.setGeometry(300, 300, 280, 150) def dragEnterEvent(self, e): e.accept() def dropEvent(self, e): mime = e.mimeData().text() x, y = map(int, mime.split(',')) if e.keyboardModifiers() & QtCore.Qt.ShiftModifier: button = Button('Button', self) button1 = Button('Button1', self) button.move(e.pos()-QtCore.QPoint(x, y)) button1.move(e.pos()-QtCore.QPoint(x, y)) button.show() button1.show() self.buttons.append(button) self.buttons.append(button1) e.setDropAction(QtCore.Qt.CopyAction) else: e.source().move(e.pos()-QtCore.QPoint(x, y)) e.setDropAction(QtCore.Qt.MoveAction) e.accept() if __name__ == '__main__': app = QtGui.QApplication(sys.argv) ex = Example() ex.show() -- https://mail.python.org/mailman/listinfo/python-list