имеется форма, на форме сцена, добавляю на сцену квадрат, премещаемый.
выделяю квадрат мышкой, перемещаю, впервый раз он перемещается нормально, а во второй раз квадрат не следует за курсором, а перемещается куда-то
что я делаю не так?
# 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):
super(MyRect, self).mousePressEvent(event)
print 'press event'
def mouseReleaseEvent(self, event):
super(MyRect, self).mousePressEvent(event)
print 'press release'
application = QtGui.QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(application.exec_())
