Найти - Пользователи
Полная версия: скачет объект на сцене
Начало » GUI » скачет объект на сцене
1
ilnur
# 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_())
есть простенькое окно, со сценой.
на сцене рисуется квадрат. квадрат передвигаемый
когда я кликаю(выделяю) на квадрате мышкой и перемещаю, квадрат нормально перемещается за курсором
когда я второй раз кликаю (выделяю квадрат), то квадрат скачет не знамо куда.

почему такое?

мне надо отловить тот момент, когда пользователь передвинул квадрат, и получить его координаты

ilnur
“Утро вечера мудренее”

class MyRect(QtGui.QGraphicsRectItem):
    def mousePressEvent(self, event):
        print 'press event'    
        super(MyRect, self).mousePressEvent(event)
    def mouseReleaseEvent(self, event):
        print 'press release'        
        super(MyRect, self).mouseReleaseEvent(event)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB