Aysun Bascetincelik
Tue, 13 May 2008 11:53:45 -0700
Hi, Sorry, I was not sure about attaching files. Here are the files. Aysun On Tue, May 13, 2008 at 2:34 PM, Hans Meine <[EMAIL PROTECTED]> wrote: > On Dienstag 13 Mai 2008, Aysun Bascetincelik wrote: > > Here is the code: > > __________________________ > > > > > > #!/usr/bin/env python > [snip] > > I don't know what the policy for this list is, but if you had attached the > file (and the needed .ui) file, we could have tried your code out. As it > is > now, the indentation is totally broken (and the graphicsForm is missing). > > Ciao, / / .o. > /--/ ..o > / / ANS ooo > > _______________________________________________ > PyQt mailing list PyQt@riverbankcomputing.com > http://www.riverbankcomputing.com/mailman/listinfo/pyqt >
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'graphicsForm.ui'
#
# Created: Tue May 13 12:57:46 2008
# by: PyQt4 UI code generator 4.3
#
# WARNING! All changes made in this file will be lost!
from PyQt4 import QtCore, QtGui
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(QtCore.QSize(QtCore.QRect(0,0,632,444).size()).expandedTo(MainWindow.minimumSizeHint()))
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.graphicsView = QtGui.QGraphicsView(self.centralwidget)
self.graphicsView.setGeometry(QtCore.QRect(0,0,500,400))
self.graphicsView.setMaximumSize(QtCore.QSize(500,400))
self.graphicsView.setBaseSize(QtCore.QSize(500,400))
self.graphicsView.setObjectName("graphicsView")
self.pointButton = QtGui.QToolButton(self.centralwidget)
self.pointButton.setGeometry(QtCore.QRect(540,10,50,26))
self.pointButton.setCheckable(True)
self.pointButton.setChecked(False)
self.pointButton.setObjectName("pointButton")
self.delButton = QtGui.QToolButton(self.centralwidget)
self.delButton.setGeometry(QtCore.QRect(540,110,51,26))
self.delButton.setObjectName("delButton")
self.pathButton = QtGui.QToolButton(self.centralwidget)
self.pathButton.setGeometry(QtCore.QRect(540,40,50,26))
self.pathButton.setCheckable(True)
self.pathButton.setChecked(False)
self.pathButton.setObjectName("pathButton")
self.selectButton = QtGui.QToolButton(self.centralwidget)
self.selectButton.setGeometry(QtCore.QRect(540,80,50,26))
self.selectButton.setCheckable(True)
self.selectButton.setChecked(False)
self.selectButton.setObjectName("selectButton")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtGui.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0,0,632,25))
self.menubar.setObjectName("menubar")
self.menuFile = QtGui.QMenu(self.menubar)
self.menuFile.setObjectName("menuFile")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtGui.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.menubar.addAction(self.menuFile.menuAction())
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8))
self.pointButton.setText(QtGui.QApplication.translate("MainWindow", "Point", None, QtGui.QApplication.UnicodeUTF8))
self.delButton.setText(QtGui.QApplication.translate("MainWindow", "Delete", None, QtGui.QApplication.UnicodeUTF8))
self.pathButton.setText(QtGui.QApplication.translate("MainWindow", "Path", None, QtGui.QApplication.UnicodeUTF8))
self.selectButton.setText(QtGui.QApplication.translate("MainWindow", "Select", None, QtGui.QApplication.UnicodeUTF8))
self.menuFile.setTitle(QtGui.QApplication.translate("MainWindow", "File", None, QtGui.QApplication.UnicodeUTF8))
graphicsForm.ui
Description: application/designer
#!/usr/bin/env python
import sys
from PyQt4 import QtCore, QtGui
from graphicsForm import Ui_MainWindow
class DiagramScene(QtGui.QGraphicsScene):
def __init__(self, graphicsView, parent=None):
QtGui.QGraphicsScene.__init__(self, QtCore.QRectF(QtCore.QPointF(0,0), QtCore.QPointF(450,350)), parent)
self.itemToAdd = 0
self.mode = 0 # 0: add mode, 1:select mode
self.view = graphicsView
def mousePressEvent(self, mouseEvent):
if (mouseEvent.button() != QtCore.Qt.LeftButton):
return
x = mouseEvent.scenePos().x()
y = mouseEvent.scenePos().y()
if(self.mode == 0):
self.createItem(x, y)
elif(self.mode == 1):
self.selectItem(x, y)
QtGui.QGraphicsScene.mousePressEvent(self, mouseEvent)
def createItem(self, x, y):
if (self.itemToAdd == 0):
self.addItem(MyPoint(x, y))
elif (self.itemToAdd == 1):
self.addLine(QtCore.QLineF(x,y,x+50,y+50))
self.update()
# self.view.update()
# self.view.show()
def selectItem(self, x, y):
selected = self.itemAt(x,y)
print selected
if selected:
selected.setSelected(True)
class StartProgram(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.scene = DiagramScene(self.ui.graphicsView)
self.ui.graphicsView.setScene(self.scene)
self.ui.graphicsView.setInteractive(True)
self.ui.pointButton.setChecked(True)
self.ui.pathButton.setChecked(False)
QtCore.QObject.connect(self.ui.pointButton,QtCore.SIGNAL("clicked()"), self.pointButtonClicked)
QtCore.QObject.connect(self.ui.pathButton,QtCore.SIGNAL("clicked()"), self.pathButtonClicked)
QtCore.QObject.connect(self.ui.selectButton,QtCore.SIGNAL("clicked()"), self.selectButtonClicked)
def pointButtonClicked(self):
self.ui.pointButton.setChecked(True)
self.ui.pathButton.setChecked(False)
self.scene.itemToAdd = 0 #0 is point
def pathButtonClicked(self):
self.ui.pathButton.setChecked(True)
self.ui.pointButton.setChecked(False)
self.scene.itemToAdd = 1 #1 is path
def selectButtonClicked(self):
if self.ui.selectButton.isChecked():
self.scene.mode = 1
else :
self.scene.mode = 0
class MyPoint(QtGui.QGraphicsPathItem):
pointToDraw = QtCore.QRectF()
def __init__(self, x, y, parent=None, scene=None):
super(MyPoint, self).__init__()
self.x = x
self.y = y
MyPoint.pointToDraw.setCoords(x,y, x+15,y+15)
self.setFlag(QtGui.QGraphicsItem.ItemIsSelectable, True)
self.setFlag(QtGui.QGraphicsItem.ItemIsMovable, True)
def paint(self, painter, option, widget=None):
if self.isSelected():
painter.setBrush(QtGui.QBrush(QtGui.QColor(0,255,255)))
else:
painter.setBrush(QtGui.QBrush(QtGui.QColor(0,0,255)))
painter.drawRect(MyPoint.pointToDraw)
def path(self):
path = QtGui.QPainterPath()
path.addEllipse(MyPoint.pointToDraw) #to add ellipse?!?!?!?!?
return path
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
myapp = StartProgram()
myapp.show()
sys.exit(app.exec_())
_______________________________________________ PyQt mailing list PyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt