# coding: utf-8 import sys from PyQt4 import QtGui, QtCore class MainWindow(QtGui.QWidget): def __init__(self): super(MainWindow, self).__init__() self.resize(350, 300) self._init_ui_widgets() def _init_ui_widgets(self): """ инициализация виджетов окна """ self.button_open_json = QtGui.QPushButton(u'Открыть', self) self.button_open_json.move(10, 10) self.button_open_json.clicked.connect(self.open_json) self.button_save_json = QtGui.QPushButton(u'Сохранить', self) self.button_save_json.move(100, 10) self.button_save_json.clicked.connect(self.save_json) self.button_exit = QtGui.QPushButton(u'Выход', self) self.button_exit.move(190, 10) self.button_exit.clicked.connect(self.exit) self.button_add_rect = QtGui.QPushButton(u'Квадрат', self) self.button_add_rect.move(10, 50) self.button_add_rect.clicked.connect(self.add_rect) self.scene = QtGui.QGraphicsScene() self.scene_view = QtGui.QGraphicsView(self.scene, self) self.scene_view.resize(200, 200) self.scene_view.move(100, 50) def open_json(self): """ обработчик открытия json """ print 'open_json clicked' def save_json(self): """ обработчик сохранения json """ print 'save_json clicked' def exit(self): """ обработчик выхода из программы """ print 'exit clicked' def add_rect(self): """ обработчик добавления квадрата на сцену """ print 'add_rect clicked' item = MyRect(10, 10, 10, 10, scene=self.scene) item.setFlag(QtGui.QGraphicsItem.ItemIsMovable) item.setFlag(QtGui.QGraphicsItem.ItemIsSelectable) self.scene.addItem(item) class MyRect(QtGui.QGraphicsRectItem): """ переопределяем объект прямоуголник """ def mousePressEvent(self, event): print 'press event' def mouseReleaseEvent(self, event): print 'press release' application = QtGui.QApplication(sys.argv) window = MainWindow() window.show() sys.exit(application.exec_())
на сцене рисуется квадрат. квадрат передвигаемый
когда я кликаю(выделяю) на квадрате мышкой и перемещаю, квадрат нормально перемещается за курсором
когда я второй раз кликаю (выделяю квадрат), то квадрат скачет не знамо куда.
почему такое?
мне надо отловить тот момент, когда пользователь передвинул квадрат, и получить его координаты