def __init__(self, planeSection, parent=None): qt.QWidget.__init__(self, parent) self.currentPlaneSection = planeSection self.scene = qt.QGraphicsScene() self.view = CustomGraphicsView(self.scene, self) self.sliceSlider = SliderAndLabel(self) self.sliceSlider._setRange(0,0) self.flagFirstCircle = True self.connect(self.view, qt.SIGNAL("CustomGraphicsViewEvent"), self.clickedOnView) self.connect(self.view,qt.SIGNAL("CustomGraphicsViewEvent"),self.mouseMoved) self.connect(self.sliceSlider.slider, qt.SIGNAL("valueChanged(int)"), self._changeSlice) self.Items = {} self.colortable = [] self.posPolyPoints = [] for i in range(256): self.colortable.append(qt.qRgb(i, i, i)) layout = qt.QVBoxLayout() layout.addWidget(self.view) layout.addWidget(self.sliceSlider) self.setLayout(layout)
def testSimple(): import sys import os filename = sys.argv[1] a = qt.QApplication(sys.argv) w = qt.QWidget() l = qt.QVBoxLayout(w) button = qt.QPushButton(w) button.setText("Print") scene = qt.QGraphicsScene() pixmapItem = qt.QGraphicsPixmapItem( qt.QPixmap.fromImage(qt.QImage(filename))) pixmapItem.setFlag(pixmapItem.ItemIsMovable, True) printer = qt.QPrinter(qt.QPrinter.HighResolution) printer.setFullPage(True) printer.setOutputFileName(os.path.splitext(filename)[0] + ".ps") page = qt.QGraphicsRectItem(0, 0, printer.width(), printer.height()) scene.setSceneRect(qt.QRectF(0, 0, printer.width(), printer.height())) scene.addItem(page) scene.addItem(pixmapItem) view = qt.QGraphicsView(scene) view.fitInView(page.rect(), qt.Qt.KeepAspectRatio) #view.setSceneRect( view.scale(2, 2) #page.scale(0.05, 0.05) def printFile(): painter = qt.QPainter(printer) scene.render( painter, qt.QRectF(0, 0, printer.width(), printer.height()), qt.QRectF(page.rect().x(), page.rect().y(), page.rect().width(), page.rect().height()), qt.Qt.KeepAspectRatio) painter.end() l.addWidget(button) l.addWidget(view) w.resize(300, 600) w.show() w.connect(button, qt.SIGNAL('clicked()'), printFile) a.exec_()
def __init__(self, parent = None, printer = None, name = "PyMcaPrintPreview", \ modal = 0, fl = 0): qt.QDialog.__init__(self, parent) self.setWindowTitle(name) self.setModal(modal) self.resize(400, 500) self.printDialog = None if printer is None: printer = qt.QPrinter(qt.QPrinter.HighResolution) printer.setPageSize(qt.QPrinter.A4) printerName = "%s" % printer.printerName() if printerName in ['id24b2u']: #id24 printer very slow in color mode printer.setColorMode(qt.QPrinter.GrayScale) printer.setFullPage(True) if (printer.width() <= 0) or (printer.height() <= 0): if QTVERSION < '4.2.0': #this is impossible (no QGraphicsView) filename = "PyMCA_print.pdf" else: filename = "PyMCA_print.ps" if sys.platform == 'win32': home = os.getenv('USERPROFILE') try: l = len(home) directory = os.path.join(home, "My Documents") except: home = '\\' directory = '\\' if os.path.isdir('%s' % directory): directory = os.path.join(directory, "PyMca") else: directory = os.path.join(home, "PyMca") if not os.path.exists('%s' % directory): os.mkdir('%s' % directory) finalfile = os.path.join(directory, filename) else: home = os.getenv('HOME') directory = os.path.join(home, "PyMca") if not os.path.exists('%s' % directory): os.mkdir('%s' % directory) finalfile = os.path.join(directory, filename) printer.setOutputFileName(finalfile) printer.setColorMode(qt.QPrinter.Color) if (printer.width() <= 0) or (printer.height() <= 0): self.message = qt.QMessageBox(self) self.message.setIcon(qt.QMessageBox.Critical) self.message.setText( "Unknown library error \non printer initialization") self.message.setWindowTitle("Library Error") self.message.setModal(0) self.badNews = True self.printer = None return else: self.badNews = False self.printer = printer self.mainLayout = qt.QVBoxLayout(self) self.mainLayout.setMargin(0) self.mainLayout.setSpacing(0) self._buildToolbar() self.scene = qt.QGraphicsScene() self.scene.setBackgroundBrush(qt.QColor(qt.Qt.lightGray)) self.page = qt.QGraphicsRectItem(0, 0, printer.width(), printer.height()) self.page.setBrush(qt.QColor(qt.Qt.white)) self.scene.setSceneRect( qt.QRectF(0, 0, printer.width(), printer.height())) self.scene.addItem(self.page) self.view = qt.QGraphicsView(self.scene) self.mainLayout.addWidget(self.view) self._buildStatusBar() self.view.fitInView(self.page.rect(), qt.Qt.KeepAspectRatio) self._viewScale = 1.00