diff options
Diffstat (limited to 'examples/widgets/graphicsview/diagramscene/diagramscene.py')
-rw-r--r-- | examples/widgets/graphicsview/diagramscene/diagramscene.py | 367 |
1 files changed, 190 insertions, 177 deletions
diff --git a/examples/widgets/graphicsview/diagramscene/diagramscene.py b/examples/widgets/graphicsview/diagramscene/diagramscene.py index d2c7f3383..c6f0b725b 100644 --- a/examples/widgets/graphicsview/diagramscene/diagramscene.py +++ b/examples/widgets/graphicsview/diagramscene/diagramscene.py @@ -2,7 +2,7 @@ ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. -## Copyright (C) 2016 The Qt Company Ltd. +## Copyright (C) 2021 The Qt Company Ltd. ## Contact: http://www.qt.io/licensing/ ## ## This file is part of the Qt for Python examples of the Qt Toolkit. @@ -41,24 +41,36 @@ ############################################################################# import math - -from PySide6 import QtCore, QtGui, QtWidgets +import sys + +from PySide6.QtCore import (QLineF, QPointF, QRect, QRectF, QSize, QSizeF, Qt, + Signal) +from PySide6.QtGui import (QAction, QColor, QFont, QIcon, QIntValidator, + QPainter, QPainterPath, QPen, QPixmap, QPolygonF) +from PySide6.QtWidgets import (QApplication, QButtonGroup, QComboBox, + QFontComboBox, QGraphicsAnchorLayout, + QGraphicsItem, QGraphicsLineItem, + QGraphicsPolygonItem, QGraphicsTextItem, + QGraphicsScene, QGraphicsView, QGridLayout, + QHBoxLayout, QLabel, QMainWindow, QMenu, + QMessageBox, QSizePolicy, QToolBox, QToolButton, + QWidget) import diagramscene_rc -class Arrow(QtWidgets.QGraphicsLineItem): +class Arrow(QGraphicsLineItem): def __init__(self, startItem, endItem, parent=None, scene=None): super(Arrow, self).__init__(parent, scene) - self._arrow_head = QtGui.QPolygonF() + self._arrow_head = QPolygonF() self._my_start_item = startItem self._my_end_item = endItem - self.setFlag(QtWidgets.QGraphicsItem.ItemIsSelectable, True) - self._my_color = QtCore.Qt.black - self.setPen(QtGui.QPen(self._my_color, 2, QtCore.Qt.SolidLine, - QtCore.Qt.RoundCap, QtCore.Qt.RoundJoin)) + self.setFlag(QGraphicsItem.ItemIsSelectable, True) + self._my_color = Qt.black + self.setPen(QPen(self._my_color, 2, Qt.SolidLine, + Qt.RoundCap, Qt.RoundJoin)) def set_color(self, color): self._my_color = color @@ -73,7 +85,8 @@ class Arrow(QtWidgets.QGraphicsLineItem): extra = (self.pen().width() + 20) / 2.0 p1 = self.line().p1() p2 = self.line().p2() - return QtCore.QRectF(p1, QtCore.QSizeF(p2.x() - p1.x(), p2.y() - p1.y())).normalized().adjusted(-extra, -extra, extra, extra) + rect = QRectF(p1, QSizeF(p2.x() - p1.x(), p2.y() - p1.y())) + return rect.normalized().adjusted(-extra, -extra, extra, extra) def shape(self): path = super(Arrow, self).shape() @@ -81,8 +94,9 @@ class Arrow(QtWidgets.QGraphicsLineItem): return path def update_position(self): - line = QtCore.QLineF(self.mapFromItem(self._my_start_item, 0, 0), self.mapFromItem(self._my_end_item, 0, 0)) - self.setLine(line) + start = self.mapFromItem(self._my_start_item, 0, 0) + end = self.mapFromItem(self._my_end_item, 0, 0) + self.setLine(QLineF(start, end)) def paint(self, painter, option, widget=None): if (self._my_start_item.collidesWithItem(self._my_end_item)): @@ -97,30 +111,33 @@ class Arrow(QtWidgets.QGraphicsLineItem): painter.setPen(my_pen) painter.setBrush(self._my_color) - center_line = QtCore.QLineF(my_start_item.pos(), my_end_item.pos()) + center_line = QLineF(my_start_item.pos(), my_end_item.pos()) end_polygon = my_end_item.polygon() p1 = end_polygon.at(0) + my_end_item.pos() - intersect_point = QtCore.QPointF() + intersect_point = QPointF() for i in end_polygon: p2 = i + my_end_item.pos() - poly_line = QtCore.QLineF(p1, p2) - intersectType, intersect_point = poly_line.intersect(center_line) - if intersectType == QtCore.QLineF.BoundedIntersection: + poly_line = QLineF(p1, p2) + intersectType, intersect_point = poly_line.intersects(center_line) + if intersectType == QLineF.BoundedIntersection: break p1 = p2 - self.setLine(QtCore.QLineF(intersect_point, my_start_item.pos())) + self.setLine(QLineF(intersect_point, my_start_item.pos())) line = self.line() angle = math.acos(line.dx() / line.length()) if line.dy() >= 0: angle = (math.pi * 2.0) - angle - arrow_p1 = line.p1() + QtCore.QPointF(math.sin(angle + math.pi / 3.0) * arrow_size, - math.cos(angle + math.pi / 3) * arrow_size) - arrow_p2 = line.p1() + QtCore.QPointF(math.sin(angle + math.pi - math.pi / 3.0) * arrow_size, - math.cos(angle + math.pi - math.pi / 3.0) * arrow_size) + + arrow_head1 = QPointF(math.sin(angle + math.pi / 3.0) * arrow_size, + math.cos(angle + math.pi / 3) * arrow_size) + arrow_p1 = line.p1() + arrow_head1 + arrow_head2 = QPointF(math.sin(angle + math.pi - math.pi / 3.0) * arrow_size, + math.cos(angle + math.pi - math.pi / 3.0) * arrow_size) + arrow_p2 = line.p1() + arrow_head2 self._arrow_head.clear() for point in [line.p1(), arrow_p1, arrow_p2]: @@ -129,42 +146,42 @@ class Arrow(QtWidgets.QGraphicsLineItem): painter.drawLine(line) painter.drawPolygon(self._arrow_head) if self.isSelected(): - painter.setPen(QtGui.QPen(my_color, 1, QtCore.Qt.DashLine)) - my_line = QtCore.QLineF(line) + painter.setPen(QPen(my_color, 1, Qt.DashLine)) + my_line = QLineF(line) my_line.translate(0, 4.0) painter.drawLine(my_line) my_line.translate(0,-8.0) painter.drawLine(my_line) -class DiagramTextItem(QtWidgets.QGraphicsTextItem): - lost_focus = QtCore.Signal(QtWidgets.QGraphicsTextItem) +class DiagramTextItem(QGraphicsTextItem): + lost_focus = Signal(QGraphicsTextItem) - selected_change = QtCore.Signal(QtWidgets.QGraphicsItem) + selected_change = Signal(QGraphicsItem) def __init__(self, parent=None, scene=None): super(DiagramTextItem, self).__init__(parent, scene) - self.setFlag(QtWidgets.QGraphicsItem.ItemIsMovable) - self.setFlag(QtWidgets.QGraphicsItem.ItemIsSelectable) + self.setFlag(QGraphicsItem.ItemIsMovable) + self.setFlag(QGraphicsItem.ItemIsSelectable) def itemChange(self, change, value): - if change == QtWidgets.QGraphicsItem.ItemSelectedChange: + if change == QGraphicsItem.ItemSelectedChange: self.selected_change.emit(self) return value def focusOutEvent(self, event): - self.setTextInteractionFlags(QtCore.Qt.NoTextInteraction) + self.setTextInteractionFlags(Qt.NoTextInteraction) self.lost_focus.emit(self) super(DiagramTextItem, self).focusOutEvent(event) def mouseDoubleClickEvent(self, event): - if self.textInteractionFlags() == QtCore.Qt.NoTextInteraction: - self.setTextInteractionFlags(QtCore.Qt.TextEditorInteraction) + if self.textInteractionFlags() == Qt.NoTextInteraction: + self.setTextInteractionFlags(Qt.TextEditorInteraction) super(DiagramTextItem, self).mouseDoubleClickEvent(event) -class DiagramItem(QtWidgets.QGraphicsPolygonItem): +class DiagramItem(QGraphicsPolygonItem): Step, Conditional, StartEnd, Io = range(4) def __init__(self, diagram_type, contextMenu, parent=None, scene=None): @@ -175,7 +192,7 @@ class DiagramItem(QtWidgets.QGraphicsPolygonItem): self.diagram_type = diagram_type self._my_context_menu = contextMenu - path = QtGui.QPainterPath() + path = QPainterPath() if self.diagram_type == self.StartEnd: path.moveTo(200, 50) path.arcTo(150, 0, 50, 50, 0, 90) @@ -185,24 +202,24 @@ class DiagramItem(QtWidgets.QGraphicsPolygonItem): path.lineTo(200, 25) self._my_polygon = path.toFillPolygon() elif self.diagram_type == self.Conditional: - self._my_polygon = QtGui.QPolygonF([ - QtCore.QPointF(-100, 0), QtCore.QPointF(0, 100), - QtCore.QPointF(100, 0), QtCore.QPointF(0, -100), - QtCore.QPointF(-100, 0)]) + self._my_polygon = QPolygonF([ + QPointF(-100, 0), QPointF(0, 100), + QPointF(100, 0), QPointF(0, -100), + QPointF(-100, 0)]) elif self.diagram_type == self.Step: - self._my_polygon = QtGui.QPolygonF([ - QtCore.QPointF(-100, -100), QtCore.QPointF(100, -100), - QtCore.QPointF(100, 100), QtCore.QPointF(-100, 100), - QtCore.QPointF(-100, -100)]) + self._my_polygon = QPolygonF([ + QPointF(-100, -100), QPointF(100, -100), + QPointF(100, 100), QPointF(-100, 100), + QPointF(-100, -100)]) else: - self._my_polygon = QtGui.QPolygonF([ - QtCore.QPointF(-120, -80), QtCore.QPointF(-70, 80), - QtCore.QPointF(120, 80), QtCore.QPointF(70, -80), - QtCore.QPointF(-120, -80)]) + self._my_polygon = QPolygonF([ + QPointF(-120, -80), QPointF(-70, 80), + QPointF(120, 80), QPointF(70, -80), + QPointF(-120, -80)]) self.setPolygon(self._my_polygon) - self.setFlag(QtWidgets.QGraphicsItem.ItemIsMovable, True) - self.setFlag(QtWidgets.QGraphicsItem.ItemIsSelectable, True) + self.setFlag(QGraphicsItem.ItemIsMovable, True) + self.setFlag(QGraphicsItem.ItemIsSelectable, True) def remove_arrow(self, arrow): try: @@ -212,18 +229,18 @@ class DiagramItem(QtWidgets.QGraphicsPolygonItem): def remove_arrows(self): for arrow in self.arrows[:]: - arrow.startItem().removeArrow(arrow) - arrow.endItem().removeArrow(arrow) + arrow.start_item().remove_arrow(arrow) + arrow.end_item().remove_arrow(arrow) self.scene().removeItem(arrow) def add_arrow(self, arrow): self.arrows.append(arrow) def image(self): - pixmap = QtGui.QPixmap(250, 250) - pixmap.fill(QtCore.Qt.transparent) - painter = QtGui.QPainter(pixmap) - painter.setPen(QtGui.QPen(QtCore.Qt.black, 8)) + pixmap = QPixmap(250, 250) + pixmap.fill(Qt.transparent) + painter = QPainter(pixmap) + painter.setPen(QPen(Qt.black, 8)) painter.translate(125, 125) painter.drawPolyline(self._my_polygon) return pixmap @@ -234,21 +251,21 @@ class DiagramItem(QtWidgets.QGraphicsPolygonItem): self._my_context_menu.exec_(event.screenPos()) def itemChange(self, change, value): - if change == QtWidgets.QGraphicsItem.ItemPositionChange: + if change == QGraphicsItem.ItemPositionChange: for arrow in self.arrows: arrow.updatePosition() return value -class DiagramScene(QtWidgets.QGraphicsScene): +class DiagramScene(QGraphicsScene): InsertItem, InsertLine, InsertText, MoveItem = range(4) - item_inserted = QtCore.Signal(DiagramItem) + item_inserted = Signal(DiagramItem) - text_inserted = QtCore.Signal(QtWidgets.QGraphicsTextItem) + text_inserted = Signal(QGraphicsTextItem) - item_selected = QtCore.Signal(QtWidgets.QGraphicsItem) + item_selected = Signal(QGraphicsItem) def __init__(self, itemMenu, parent=None): super(DiagramScene, self).__init__(parent) @@ -258,16 +275,16 @@ class DiagramScene(QtWidgets.QGraphicsScene): self._my_item_type = DiagramItem.Step self.line = None self._text_item = None - self._my_item_color = QtCore.Qt.white - self._my_text_color = QtCore.Qt.black - self._my_line_color = QtCore.Qt.black - self._my_font = QtGui.QFont() + self._my_item_color = Qt.white + self._my_text_color = Qt.black + self._my_line_color = Qt.black + self._my_font = QFont() def set_line_color(self, color): self._my_line_color = color if self.is_item_change(Arrow): item = self.selectedItems()[0] - item.setColor(self._my_line_color) + item.set_color(self._my_line_color) self.update() def set_text_color(self, color): @@ -304,7 +321,7 @@ class DiagramScene(QtWidgets.QGraphicsScene): item.deleteLater() def mousePressEvent(self, mouseEvent): - if (mouseEvent.button() != QtCore.Qt.LeftButton): + if (mouseEvent.button() != Qt.LeftButton): return if self._my_mode == self.InsertItem: @@ -314,14 +331,14 @@ class DiagramScene(QtWidgets.QGraphicsScene): item.setPos(mouseEvent.scenePos()) self.item_inserted.emit(item) elif self._my_mode == self.InsertLine: - self.line = QtWidgets.QGraphicsLineItem(QtCore.QLineF(mouseEvent.scenePos(), + self.line = QGraphicsLineItem(QLineF(mouseEvent.scenePos(), mouseEvent.scenePos())) - self.line.setPen(QtGui.QPen(self._my_line_color, 2)) + self.line.setPen(QPen(self._my_line_color, 2)) self.addItem(self.line) elif self._my_mode == self.InsertText: text_item = DiagramTextItem() text_item.setFont(self._my_font) - text_item.setTextInteractionFlags(QtCore.Qt.TextEditorInteraction) + text_item.setTextInteractionFlags(Qt.TextEditorInteraction) text_item.setZValue(1000.0) text_item.lost_focus.connect(self.editor_lost_focus) text_item.selected_change.connect(self.item_selected) @@ -334,7 +351,7 @@ class DiagramScene(QtWidgets.QGraphicsScene): def mouseMoveEvent(self, mouseEvent): if self._my_mode == self.InsertLine and self.line: - new_line = QtCore.QLineF(self.line.line().p1(), mouseEvent.scenePos()) + new_line = QLineF(self.line.line().p1(), mouseEvent.scenePos()) self.line.setLine(new_line) elif self._my_mode == self.MoveItem: super(DiagramScene, self).mouseMoveEvent(mouseEvent) @@ -359,8 +376,8 @@ class DiagramScene(QtWidgets.QGraphicsScene): end_item = end_items[0] arrow = Arrow(start_item, end_item) arrow.set_color(self._my_line_color) - start_item.addArrow(arrow) - end_item.addArrow(arrow) + start_item.add_arrow(arrow) + end_item.add_arrow(arrow) arrow.setZValue(-1000.0) self.addItem(arrow) arrow.update_position() @@ -375,7 +392,7 @@ class DiagramScene(QtWidgets.QGraphicsScene): return False -class MainWindow(QtWidgets.QMainWindow): +class MainWindow(QMainWindow): insert_text_button = 10 def __init__(self): @@ -386,19 +403,19 @@ class MainWindow(QtWidgets.QMainWindow): self.create_tool_box() self.scene = DiagramScene(self._item_menu) - self.scene.setSceneRect(QtCore.QRectF(0, 0, 5000, 5000)) + self.scene.setSceneRect(QRectF(0, 0, 5000, 5000)) self.scene.item_inserted.connect(self.item_inserted) self.scene.text_inserted.connect(self.text_inserted) self.scene.item_selected.connect(self.item_selected) self.create_toolbars() - layout = QtWidgets.QHBoxLayout() + layout = QHBoxLayout() layout.addWidget(self._tool_box) - self.view = QtWidgets.QGraphicsView(self.scene) + self.view = QGraphicsView(self.scene) layout.addWidget(self.view) - self.widget = QtWidgets.QWidget() + self.widget = QWidget() self.widget.setLayout(layout) self.setCentralWidget(self.widget) @@ -412,13 +429,13 @@ class MainWindow(QtWidgets.QMainWindow): text = button.text() if text == "Blue Grid": - self.scene.setBackgroundBrush(QtGui.QBrush(QtGui.QPixmap(':/images/background1.png'))) + self.scene.setBackgroundBrush(QBrush(QPixmap(':/images/background1.png'))) elif text == "White Grid": - self.scene.setBackgroundBrush(QtGui.QBrush(QtGui.QPixmap(':/images/background2.png'))) + self.scene.setBackgroundBrush(QBrush(QPixmap(':/images/background2.png'))) elif text == "Gray Grid": - self.scene.setBackgroundBrush(QtGui.QBrush(QtGui.QPixmap(':/images/background3.png'))) + self.scene.setBackgroundBrush(QBrush(QPixmap(':/images/background3.png'))) else: - self.scene.setBackgroundBrush(QtGui.QBrush(QtGui.QPixmap(':/images/background4.png'))) + self.scene.setBackgroundBrush(QBrush(QPixmap(':/images/background4.png'))) self.scene.update() self.view.update() @@ -438,7 +455,7 @@ class MainWindow(QtWidgets.QMainWindow): def delete_item(self): for item in self.scene.selectedItems(): if isinstance(item, DiagramItem): - item.removeArrows() + item.remove_arrows() self.scene.removeItem(item) def pointer_group_clicked(self, i): @@ -487,8 +504,8 @@ class MainWindow(QtWidgets.QMainWindow): def scene_scale_changed(self, scale): new_scale = int(scale[:-1]) / 100.0 - old_matrix = self.view.matrix() - self.view.resetMatrix() + old_matrix = self.view.transform() + self.view.resetTransform() self.view.translate(old_matrix.dx(), old_matrix.dy()) self.view.scale(new_scale, new_scale) @@ -496,39 +513,39 @@ class MainWindow(QtWidgets.QMainWindow): self._text_action = self.sender() self._font_color_tool_button.setIcon(self.create_color_tool_button_icon( ':/images/textpointer.png', - QtGui.QColor(self._text_action.data()))) + QColor(self._text_action.data()))) self.text_button_triggered() def item_color_changed(self): self._fill_action = self.sender() self._fill_color_tool_button.setIcon(self.create_color_tool_button_icon( ':/images/floodfill.png', - QtGui.QColor(self._fill_action.data()))) + QColor(self._fill_action.data()))) self.fill_button_triggered() def line_color_changed(self): self._line_action = self.sender() self._line_color_tool_button.setIcon(self.create_color_tool_button_icon( ':/images/linecolor.png', - QtGui.QColor(self._line_action.data()))) + QColor(self._line_action.data()))) self.line_button_triggered() def text_button_triggered(self): - self.scene.set_text_color(QtGui.QColor(self._text_action.data())) + self.scene.set_text_color(QColor(self._text_action.data())) def fill_button_triggered(self): - self.scene.set_item_color(QtGui.QColor(self._fill_action.data())) + self.scene.set_item_color(QColor(self._fill_action.data())) def line_button_triggered(self): - self.scene.set_line_color(QtGui.QColor(self._line_action.data())) + self.scene.set_line_color(QColor(self._line_action.data())) def handle_font_change(self): font = self._font_combo.currentFont() font.setPointSize(int(self._font_size_combo.currentText())) if self._bold_action.isChecked(): - font.setWeight(QtGui.QFont.Bold) + font.setWeight(QFont.Bold) else: - font.setWeight(QtGui.QFont.Normal) + font.setWeight(QFont.Normal) font.setItalic(self._italic_action.isChecked()) font.setUnderline(self._underline_action.isChecked()) @@ -539,20 +556,20 @@ class MainWindow(QtWidgets.QMainWindow): color = item.defaultTextColor() self._font_combo.setCurrentFont(font) self._font_size_combo.setEditText(str(font.pointSize())) - self._bold_action.setChecked(font.weight() == QtGui.QFont.Bold) + self._bold_action.setChecked(font.weight() == QFont.Bold) self._italic_action.setChecked(font.italic()) self._underline_action.setChecked(font.underline()) def about(self): - QtWidgets.QMessageBox.about(self, "About Diagram Scene", + QMessageBox.about(self, "About Diagram Scene", "The <b>Diagram Scene</b> example shows use of the graphics framework.") def create_tool_box(self): - self._button_group = QtWidgets.QButtonGroup() + self._button_group = QButtonGroup() self._button_group.setExclusive(False) self._button_group.idClicked.connect(self.button_group_clicked) - layout = QtWidgets.QGridLayout() + layout = QGridLayout() layout.addWidget(self.create_cell_widget("Conditional", DiagramItem.Conditional), 0, 0) layout.addWidget(self.create_cell_widget("Process", DiagramItem.Step), 0, @@ -560,31 +577,30 @@ class MainWindow(QtWidgets.QMainWindow): layout.addWidget(self.create_cell_widget("Input/Output", DiagramItem.Io), 1, 0) - text_button = QtWidgets.QToolButton() + text_button = QToolButton() text_button.setCheckable(True) self._button_group.addButton(text_button, self.insert_text_button) - text_button.setIcon(QtGui.QIcon(QtGui.QPixmap(':/images/textpointer.png') + text_button.setIcon(QIcon(QPixmap(':/images/textpointer.png') .scaled(30, 30))) - text_button.setIconSize(QtCore.QSize(50, 50)) + text_button.setIconSize(QSize(50, 50)) - text_layout = QtWidgets.QGridLayout() - text_layout.addWidget(text_button, 0, 0, QtCore.Qt.AlignHCenter) - text_layout.addWidget(QtWidgets.QLabel("Text"), 1, 0, - QtCore.Qt.AlignCenter) - text_widget = QtWidgets.QWidget() + text_layout = QGridLayout() + text_layout.addWidget(text_button, 0, 0, Qt.AlignHCenter) + text_layout.addWidget(QLabel("Text"), 1, 0, Qt.AlignCenter) + text_widget = QWidget() text_widget.setLayout(text_layout) layout.addWidget(text_widget, 1, 1) layout.setRowStretch(3, 10) layout.setColumnStretch(2, 10) - item_widget = QtWidgets.QWidget() + item_widget = QWidget() item_widget.setLayout(layout) - self._background_button_group = QtWidgets.QButtonGroup() + self._background_button_group = QButtonGroup() self._background_button_group.buttonClicked.connect(self.background_button_group_clicked) - background_layout = QtWidgets.QGridLayout() + background_layout = QGridLayout() background_layout.addWidget(self.create_background_cell_widget("Blue Grid", ':/images/background1.png'), 0, 0) background_layout.addWidget(self.create_background_cell_widget("White Grid", @@ -597,48 +613,48 @@ class MainWindow(QtWidgets.QMainWindow): background_layout.setRowStretch(2, 10) background_layout.setColumnStretch(2, 10) - background_widget = QtWidgets.QWidget() + background_widget = QWidget() background_widget.setLayout(background_layout) - self._tool_box = QtWidgets.QToolBox() - self._tool_box.setSizePolicy(QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Ignored)) + self._tool_box = QToolBox() + self._tool_box.setSizePolicy(QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Ignored)) self._tool_box.setMinimumWidth(item_widget.sizeHint().width()) self._tool_box.addItem(item_widget, "Basic Flowchart Shapes") self._tool_box.addItem(background_widget, "Backgrounds") def create_actions(self): - self._to_front_action = QtGui.QAction( - QtGui.QIcon(':/images/bringtofront.png'), "Bring to &Front", + self._to_front_action = QAction( + QIcon(':/images/bringtofront.png'), "Bring to &Front", self, shortcut="Ctrl+F", statusTip="Bring item to front", triggered=self.bring_to_front) - self._send_back_action = QtGui.QAction( - QtGui.QIcon(':/images/sendtoback.png'), "Send to &Back", self, + self._send_back_action = QAction( + QIcon(':/images/sendtoback.png'), "Send to &Back", self, shortcut="Ctrl+B", statusTip="Send item to back", triggered=self.send_to_back) - self._delete_action = QtGui.QAction(QtGui.QIcon(':/images/delete.png'), + self._delete_action = QAction(QIcon(':/images/delete.png'), "&Delete", self, shortcut="Delete", statusTip="Delete item from diagram", triggered=self.delete_item) - self._exit_action = QtGui.QAction("E&xit", self, shortcut="Ctrl+X", + self._exit_action = QAction("E&xit", self, shortcut="Ctrl+X", statusTip="Quit Scenediagram example", triggered=self.close) - self._bold_action = QtGui.QAction(QtGui.QIcon(':/images/bold.png'), + self._bold_action = QAction(QIcon(':/images/bold.png'), "Bold", self, checkable=True, shortcut="Ctrl+B", triggered=self.handle_font_change) - self._italic_action = QtGui.QAction(QtGui.QIcon(':/images/italic.png'), + self._italic_action = QAction(QIcon(':/images/italic.png'), "Italic", self, checkable=True, shortcut="Ctrl+I", triggered=self.handle_font_change) - self._underline_action = QtGui.QAction( - QtGui.QIcon(':/images/underline.png'), "Underline", self, + self._underline_action = QAction( + QIcon(':/images/underline.png'), "Underline", self, checkable=True, shortcut="Ctrl+U", triggered=self.handle_font_change) - self._about_action = QtGui.QAction("A&bout", self, shortcut="Ctrl+B", + self._about_action = QAction("A&bout", self, shortcut="Ctrl+B", triggered=self.about) def create_menus(self): @@ -660,46 +676,46 @@ class MainWindow(QtWidgets.QMainWindow): self._edit_tool_bar.addAction(self._to_front_action) self._edit_tool_bar.addAction(self._send_back_action) - self._font_combo = QtWidgets.QFontComboBox() + self._font_combo = QFontComboBox() self._font_combo.currentFontChanged.connect(self.current_font_changed) - self._font_size_combo = QtWidgets.QComboBox() + self._font_size_combo = QComboBox() self._font_size_combo.setEditable(True) for i in range(8, 30, 2): self._font_size_combo.addItem(str(i)) - validator = QtGui.QIntValidator(2, 64, self) + validator = QIntValidator(2, 64, self) self._font_size_combo.setValidator(validator) self._font_size_combo.currentIndexChanged.connect(self.font_size_changed) - self._font_color_tool_button = QtWidgets.QToolButton() - self._font_color_tool_button.setPopupMode(QtWidgets.QToolButton.MenuButtonPopup) + self._font_color_tool_button = QToolButton() + self._font_color_tool_button.setPopupMode(QToolButton.MenuButtonPopup) self._font_color_tool_button.setMenu( - self.create_color_menu(self.text_color_changed, QtCore.Qt.black)) + self.create_color_menu(self.text_color_changed, Qt.black)) self._text_action = self._font_color_tool_button.menu().defaultAction() self._font_color_tool_button.setIcon( self.create_color_tool_button_icon(':/images/textpointer.png', - QtCore.Qt.black)) + Qt.black)) self._font_color_tool_button.setAutoFillBackground(True) self._font_color_tool_button.clicked.connect(self.text_button_triggered) - self._fill_color_tool_button = QtWidgets.QToolButton() - self._fill_color_tool_button.setPopupMode(QtWidgets.QToolButton.MenuButtonPopup) + self._fill_color_tool_button = QToolButton() + self._fill_color_tool_button.setPopupMode(QToolButton.MenuButtonPopup) self._fill_color_tool_button.setMenu( - self.create_color_menu(self.item_color_changed, QtCore.Qt.white)) + self.create_color_menu(self.item_color_changed, Qt.white)) self._fill_action = self._fill_color_tool_button.menu().defaultAction() self._fill_color_tool_button.setIcon( self.create_color_tool_button_icon(':/images/floodfill.png', - QtCore.Qt.white)) + Qt.white)) self._fill_color_tool_button.clicked.connect(self.fill_button_triggered) - self._line_color_tool_button = QtWidgets.QToolButton() - self._line_color_tool_button.setPopupMode(QtWidgets.QToolButton.MenuButtonPopup) + self._line_color_tool_button = QToolButton() + self._line_color_tool_button.setPopupMode(QToolButton.MenuButtonPopup) self._line_color_tool_button.setMenu( - self.create_color_menu(self.line_color_changed, QtCore.Qt.black)) + self.create_color_menu(self.line_color_changed, Qt.black)) self._line_action = self._line_color_tool_button.menu().defaultAction() self._line_color_tool_button.setIcon( self.create_color_tool_button_icon(':/images/linecolor.png', - QtCore.Qt.black)) + Qt.black)) self._line_color_tool_button.clicked.connect(self.line_button_triggered) self._text_tool_bar = self.addToolBar("Font") @@ -714,21 +730,21 @@ class MainWindow(QtWidgets.QMainWindow): self._color_tool_bar.addWidget(self._fill_color_tool_button) self._color_tool_bar.addWidget(self._line_color_tool_button) - pointer_button = QtWidgets.QToolButton() + pointer_button = QToolButton() pointer_button.setCheckable(True) pointer_button.setChecked(True) - pointer_button.setIcon(QtGui.QIcon(':/images/pointer.png')) - line_pointer_button = QtWidgets.QToolButton() + pointer_button.setIcon(QIcon(':/images/pointer.png')) + line_pointer_button = QToolButton() line_pointer_button.setCheckable(True) - line_pointer_button.setIcon(QtGui.QIcon(':/images/linepointer.png')) + line_pointer_button.setIcon(QIcon(':/images/linepointer.png')) - self._pointer_type_group = QtWidgets.QButtonGroup() + self._pointer_type_group = QButtonGroup() self._pointer_type_group.addButton(pointer_button, DiagramScene.MoveItem) self._pointer_type_group.addButton(line_pointer_button, DiagramScene.InsertLine) self._pointer_type_group.idClicked.connect(self.pointer_group_clicked) - self._scene_scale_combo = QtWidgets.QComboBox() + self._scene_scale_combo = QComboBox() self._scene_scale_combo.addItems(["50%", "75%", "100%", "125%", "150%"]) self._scene_scale_combo.setCurrentIndex(2) self._scene_scale_combo.currentTextChanged.connect(self.scene_scale_changed) @@ -739,83 +755,80 @@ class MainWindow(QtWidgets.QMainWindow): self._pointer_toolbar.addWidget(self._scene_scale_combo) def create_background_cell_widget(self, text, image): - button = QtWidgets.QToolButton() + button = QToolButton() button.setText(text) - button.setIcon(QtGui.QIcon(image)) - button.setIconSize(QtCore.QSize(50, 50)) + button.setIcon(QIcon(image)) + button.setIconSize(QSize(50, 50)) button.setCheckable(True) self._background_button_group.addButton(button) - layout = QtWidgets.QGridLayout() - layout.addWidget(button, 0, 0, QtCore.Qt.AlignHCenter) - layout.addWidget(QtWidgets.QLabel(text), 1, 0, QtCore.Qt.AlignCenter) + layout = QGridLayout() + layout.addWidget(button, 0, 0, Qt.AlignHCenter) + layout.addWidget(QLabel(text), 1, 0, Qt.AlignCenter) - widget = QtWidgets.QWidget() + widget = QWidget() widget.setLayout(layout) return widget def create_cell_widget(self, text, diagram_type): item = DiagramItem(diagram_type, self._item_menu) - icon = QtGui.QIcon(item.image()) + icon = QIcon(item.image()) - button = QtWidgets.QToolButton() + button = QToolButton() button.setIcon(icon) - button.setIconSize(QtCore.QSize(50, 50)) + button.setIconSize(QSize(50, 50)) button.setCheckable(True) self._button_group.addButton(button, diagram_type) - layout = QtWidgets.QGridLayout() - layout.addWidget(button, 0, 0, QtCore.Qt.AlignHCenter) - layout.addWidget(QtWidgets.QLabel(text), 1, 0, QtCore.Qt.AlignCenter) + layout = QGridLayout() + layout.addWidget(button, 0, 0, Qt.AlignHCenter) + layout.addWidget(QLabel(text), 1, 0, Qt.AlignCenter) - widget = QtWidgets.QWidget() + widget = QWidget() widget.setLayout(layout) return widget def create_color_menu(self, slot, defaultColor): - colors = [QtCore.Qt.black, QtCore.Qt.white, QtCore.Qt.red, QtCore.Qt.blue, QtCore.Qt.yellow] + colors = [Qt.black, Qt.white, Qt.red, Qt.blue, Qt.yellow] names = ["black", "white", "red", "blue", "yellow"] - color_menu = QtWidgets.QMenu(self) + color_menu = QMenu(self) for color, name in zip(colors, names): - action = QtGui.QAction(self.create_color_icon(color), name, self, + action = QAction(self.create_color_icon(color), name, self, triggered=slot) - action.setData(QtGui.QColor(color)) + action.setData(QColor(color)) color_menu.addAction(action) if color == defaultColor: color_menu.setDefaultAction(action) return color_menu def create_color_tool_button_icon(self, imageFile, color): - pixmap = QtGui.QPixmap(50, 80) - pixmap.fill(QtCore.Qt.transparent) - painter = QtGui.QPainter(pixmap) - image = QtGui.QPixmap(imageFile) - target = QtCore.QRect(0, 0, 50, 60) - source = QtCore.QRect(0, 0, 42, 42) - painter.fillRect(QtCore.QRect(0, 60, 50, 80), color) + pixmap = QPixmap(50, 80) + pixmap.fill(Qt.transparent) + painter = QPainter(pixmap) + image = QPixmap(imageFile) + target = QRect(0, 0, 50, 60) + source = QRect(0, 0, 42, 42) + painter.fillRect(QRect(0, 60, 50, 80), color) painter.drawPixmap(target, image, source) painter.end() - return QtGui.QIcon(pixmap) + return QIcon(pixmap) def create_color_icon(self, color): - pixmap = QtGui.QPixmap(20, 20) - painter = QtGui.QPainter(pixmap) - painter.setPen(QtCore.Qt.NoPen) - painter.fillRect(QtCore.QRect(0, 0, 20, 20), color) + pixmap = QPixmap(20, 20) + painter = QPainter(pixmap) + painter.setPen(Qt.NoPen) + painter.fillRect(QRect(0, 0, 20, 20), color) painter.end() - return QtGui.QIcon(pixmap) + return QIcon(pixmap) if __name__ == '__main__': - - import sys - - app = QtWidgets.QApplication(sys.argv) + app = QApplication(sys.argv) main_window = MainWindow() main_window.setGeometry(100, 100, 800, 500) |