[prev in list] [next in list] [prev in thread] [next in thread]
List: pykde
Subject: [PyQt] Problem with QGraphicsView and Scale
From: Cyril Giraudon <cyril.giraudon () free ! fr>
Date: 2012-07-09 15:11:31
Message-ID: 4FFAF4A3.9000807 () free ! fr
[Download RAW message or body]
Hello,
My system is win7 and I use PyQt version 4.8.5 on Qt 4.7.3.
Seems there is a bug with QGraphicsView and scaling capability.
Consider the script below. It is a simple circle in a view.
The program can take a parameter : 1 <= the scale <= 1000 (for instance).
When scale = 1 (python script.py 1), the circle is selected only when
the circle is clicked.
When scale = 1000 (python script.py 1000), the circle is selected when
the mouse is in the top left quart plane relative to the circle
x < 0
y < 0
Is this a known issue ?
Best regards,
Cyril.
# script.py [scale]
# -*- coding: utf-8 -*-
import sys
from PyQt4.QtCore import Qt
from PyQt4.QtGui import (QApplication, QGraphicsScene,
QGraphicsView, QGraphicsEllipseItem,
QPainter, QBrush)
class Circle(QGraphicsEllipseItem):
def __init__(self, parent=None):
super(Circle, self).__init__(-50., -50., 100., 100., parent=parent)
self.setFlag(self.ItemIsSelectable , True)
self.setFlag(self.ItemIsMovable, True)
self.setBrush(QBrush(Qt.red))
if __name__ == "__main__":
from PyQt4.QtCore import QT_VERSION_STR, PYQT_VERSION_STR
print "PyQt version : ", PYQT_VERSION_STR
print "Qt version : ", QT_VERSION_STR
app = QApplication(sys.argv)
scale = float(sys.argv[1]) if len(sys.argv)>1 else 1.
scene = QGraphicsScene()
fc = Circle(parent=None)
fc.setScale(1/scale)
scene.addItem(fc)
view = QGraphicsView(scene)
view.scale(scale, scale)
view.setRenderHints(QPainter.Antialiasing)
view.show()
app.exec_()
sys.exit()
_______________________________________________
PyQt mailing list PyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic