本文整理汇总了Python中PyQt5.QtWidgets.QGraphicsScene.setItemIndexMethod方法的典型用法代码示例。如果您正苦于以下问题:Python QGraphicsScene.setItemIndexMethod方法的具体用法?Python QGraphicsScene.setItemIndexMethod怎么用?Python QGraphicsScene.setItemIndexMethod使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PyQt5.QtWidgets.QGraphicsScene
的用法示例。
在下文中一共展示了QGraphicsScene.setItemIndexMethod方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: MainWindow
# 需要导入模块: from PyQt5.QtWidgets import QGraphicsScene [as 别名]
# 或者: from PyQt5.QtWidgets.QGraphicsScene import setItemIndexMethod [as 别名]
class MainWindow(QMainWindow):
#somewhere in constructor:
def __init__(self):
super(MainWindow, self).__init__()
uic.loadUi('ui_window.ui', self)
self.setupUI()
def setupUI(self):
root = QFileInfo(__file__).absolutePath()
self.actionOpen.setIcon(QIcon(root+'/images/Live Mail.ico'))
self.actionSave.setIcon(QIcon(root+'/images/489751-Floppy_Disk-128.png'))
self.actionSelect.setIcon(QIcon(root+'/images/mouse.png'))
self.actionRip_off.setIcon(QIcon(root+'/images/rip_off.png'))
self.setWindowTitle('AnimDNA')
self.actionAnalyze_structure.setIcon(QIcon(root+'/images/transformation.png'))
self.setWindowIcon((QIcon(root+'/images/bug.png')))
from PyQt5 import QtCore, QtGui, QtWidgets
self.main_splitter = QtWidgets.QSplitter(self.centralwidget)
self.path_splitter = QtWidgets.QSplitter(self.main_splitter)
self.renderView = CustomQGraphicsView(self.path_splitter)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.renderView.sizePolicy().hasHeightForWidth())
self.renderView.setSizePolicy(sizePolicy)
self.renderView.setMinimumSize(QtCore.QSize(0, 0))
self.renderView.setMouseTracking(True)
self.renderView.setFocusPolicy(QtCore.Qt.WheelFocus)
self.renderView.setFrameShadow(QtWidgets.QFrame.Plain)
self.renderView.setLineWidth(0)
self.renderView.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
self.renderView.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
self.renderView.setRenderHints(QtGui.QPainter.Antialiasing|QtGui.QPainter.HighQualityAntialiasing|QtGui.QPainter.TextAntialiasing)
self.renderView.setTransformationAnchor(QtWidgets.QGraphicsView.AnchorUnderMouse)
self.renderView.setObjectName("renderView")
self.renderView.setupGL(self)
self.gridLayout.addWidget(self.main_splitter, 0, 0, 1, 1)
self.action_modify = QtWidgets.QAction(self)
self.action_modify.setCheckable(True)
def updateRenderView(self,doc_ctrl):
doc = doc_ctrl._document
self.pathscene = QGraphicsScene(parent=self.renderView)
self.pathroot = PathRootItem(rect=self.pathscene.sceneRect(),\
parent=None,\
window=self,\
document= doc_ctrl._document)
self.pathroot.setFlag(QGraphicsItem.ItemHasNoContents)
self.pathscene.addItem(self.pathroot)
self.pathscene.setItemIndexMethod(QGraphicsScene.NoIndex)
assert self.pathroot.scene() == self.pathscene
self.renderView.setScene(self.pathscene)
self.renderView.scene_root_item = self.pathroot
self.renderView._scale_fit_factor = 0.9
self.renderView._name = 'renderView'
self.path_tool_manager = PathToolManager(self,self.path_toolbar)
示例2: __init__
# 需要导入模块: from PyQt5.QtWidgets import QGraphicsScene [as 别名]
# 或者: from PyQt5.QtWidgets.QGraphicsScene import setItemIndexMethod [as 别名]
def __init__(self):
super(GraphWidget, self).__init__()
self.timerId = 0
scene = QGraphicsScene(self)
scene.setItemIndexMethod(QGraphicsScene.NoIndex)
scene.setSceneRect(-200, -200, 400, 400)
self.setScene(scene)
self.setCacheMode(QGraphicsView.CacheBackground)
self.setViewportUpdateMode(QGraphicsView.BoundingRectViewportUpdate)
self.setRenderHint(QPainter.Antialiasing)
self.setTransformationAnchor(QGraphicsView.AnchorUnderMouse)
self.setResizeAnchor(QGraphicsView.AnchorViewCenter)
node1 = Node(self)
node2 = Node(self)
node3 = Node(self)
node4 = Node(self)
self.centerNode = Node(self)
node6 = Node(self)
node7 = Node(self)
node8 = Node(self)
node9 = Node(self)
scene.addItem(node1)
scene.addItem(node2)
scene.addItem(node3)
scene.addItem(node4)
scene.addItem(self.centerNode)
scene.addItem(node6)
scene.addItem(node7)
scene.addItem(node8)
scene.addItem(node9)
scene.addItem(Edge(node1, node2))
scene.addItem(Edge(node2, node3))
scene.addItem(Edge(node2, self.centerNode))
scene.addItem(Edge(node3, node6))
scene.addItem(Edge(node4, node1))
scene.addItem(Edge(node4, self.centerNode))
scene.addItem(Edge(self.centerNode, node6))
scene.addItem(Edge(self.centerNode, node8))
scene.addItem(Edge(node6, node9))
scene.addItem(Edge(node7, node4))
scene.addItem(Edge(node8, node7))
scene.addItem(Edge(node9, node8))
node1.setPos(-50, -50)
node2.setPos(0, -50)
node3.setPos(50, -50)
node4.setPos(-50, 0)
self.centerNode.setPos(0, 0)
node6.setPos(50, 0)
node7.setPos(-50, 50)
node8.setPos(0, 50)
node9.setPos(50, 50)
self.scale(0.8, 0.8)
self.setMinimumSize(400, 400)
self.setWindowTitle("Elastic Nodes")
示例3: init_ui
# 需要导入模块: from PyQt5.QtWidgets import QGraphicsScene [as 别名]
# 或者: from PyQt5.QtWidgets.QGraphicsScene import setItemIndexMethod [as 别名]
def init_ui(self):
scene = QGraphicsScene()
scene.setBackgroundBrush(QColor(100, 100, 100))
scene.setItemIndexMethod(QGraphicsScene.BspTreeIndex)
scene.setSceneRect(scene.itemsBoundingRect())
self.setDragMode(QGraphicsView.RubberBandDrag)
self.setViewportUpdateMode(QGraphicsView.FullViewportUpdate)
self.setRenderHints(QPainter.Antialiasing | QPainter.TextAntialiasing)
self.frame_item = QGraphicsPixmapItem()
self.text_item_offset = 0
self.rect_item_array = []
self.text_item_array = []
for i in range(0, 5):
rect_item = QGraphicsRectItem()
rect_item.setVisible(False)
rect_item.setZValue(20.0)
rect_item.setPen(QPen(Qt.red, 5))
rect_item.setRect(20, 20, 20, 20)
scene.addItem(rect_item)
self.rect_item_array.append(rect_item)
text_item = QGraphicsSimpleTextItem("")
text_item.setBrush(QBrush(Qt.red))
text_item.setZValue(20.0)
text_item.setPos(10, 50)
text_item.setFont(QFont("黑体", 24))
text_item.setVisible(False)
scene.addItem(text_item)
self.text_item_array.append(text_item)
scene.addItem(self.frame_item)
self.curr_factor = 1.0
self.setScene(scene)
示例4: __init__
# 需要导入模块: from PyQt5.QtWidgets import QGraphicsScene [as 别名]
# 或者: from PyQt5.QtWidgets.QGraphicsScene import setItemIndexMethod [as 别名]
#.........这里部分代码省略.........
frontState.assignProperty(selectionItem, "visible", True)
backState.assignProperty(pad, "fill", True)
backState.assignProperty(backItem, "visible", True)
backState.assignProperty(xRotation, "angle", 0.0)
backState.assignProperty(yRotation, "angle", 0.0)
backState.assignProperty(flipRotation, "angle", 180.0)
backState.assignProperty(selectionItem, "visible", False)
stateMachine.addDefaultAnimation(smoothXRotation)
stateMachine.addDefaultAnimation(smoothYRotation)
stateMachine.addDefaultAnimation(smoothXSelection)
stateMachine.addDefaultAnimation(smoothYSelection)
stateMachine.setInitialState(splashState)
anyKeyTransition = QEventTransition(self, QEvent.KeyPress, splashState)
anyKeyTransition.setTargetState(frontState)
anyKeyTransition.addAnimation(smoothSplashMove)
anyKeyTransition.addAnimation(smoothSplashOpacity)
enterTransition = QKeyEventTransition(self, QEvent.KeyPress,
Qt.Key_Enter, backState)
returnTransition = QKeyEventTransition(self, QEvent.KeyPress,
Qt.Key_Return, backState)
backEnterTransition = QKeyEventTransition(self, QEvent.KeyPress,
Qt.Key_Enter, frontState)
backReturnTransition = QKeyEventTransition(self, QEvent.KeyPress,
Qt.Key_Return, frontState)
enterTransition.setTargetState(historyState)
returnTransition.setTargetState(historyState)
backEnterTransition.setTargetState(backState)
backReturnTransition.setTargetState(backState)
enterTransition.addAnimation(flipAnimation)
returnTransition.addAnimation(flipAnimation)
backEnterTransition.addAnimation(flipAnimation)
backReturnTransition.addAnimation(flipAnimation)
columns = size.width()
rows = size.height()
stateGrid = []
for y in range(rows):
stateGrid.append([QState(frontState) for _ in range(columns)])
frontState.setInitialState(stateGrid[0][0])
selectionItem.setPos(pad.iconAt(0, 0).pos())
for y in range(rows):
for x in range(columns):
state = stateGrid[y][x]
rightTransition = QKeyEventTransition(self, QEvent.KeyPress,
Qt.Key_Right, state)
leftTransition = QKeyEventTransition(self, QEvent.KeyPress,
Qt.Key_Left, state)
downTransition = QKeyEventTransition(self, QEvent.KeyPress,
Qt.Key_Down, state)
upTransition = QKeyEventTransition(self, QEvent.KeyPress,
Qt.Key_Up, state)
rightTransition.setTargetState(stateGrid[y][(x + 1) % columns])
leftTransition.setTargetState(stateGrid[y][((x - 1) + columns) % columns])
downTransition.setTargetState(stateGrid[(y + 1) % rows][x])
upTransition.setTargetState(stateGrid[((y - 1) + rows) % rows][x])
icon = pad.iconAt(x, y)
state.assignProperty(xRotation, "angle", -icon.x() / 6.0)
state.assignProperty(yRotation, "angle", icon.y() / 6.0)
state.assignProperty(selectionItem, "x", icon.x())
state.assignProperty(selectionItem, "y", icon.y())
frontState.assignProperty(icon, "visible", True)
backState.assignProperty(icon, "visible", False)
setIconVisibleAnimation = QPropertyAnimation(icon, b'visible')
setIconVisibleAnimation.setDuration(0)
setVariablesSequence.addAnimation(setIconVisibleAnimation)
scene = QGraphicsScene(self)
scene.setBackgroundBrush(QBrush(QPixmap(":/images/blue_angle_swirl.jpg")))
scene.setItemIndexMethod(QGraphicsScene.NoIndex)
scene.addItem(pad)
scene.setSceneRect(scene.itemsBoundingRect())
self.setScene(scene)
sbr = splash.boundingRect()
splash.setPos(-sbr.width() / 2, scene.sceneRect().top() - 2)
frontState.assignProperty(splash, "y", splash.y() - 100.0)
scene.addItem(splash)
self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.setMinimumSize(50, 50)
self.setViewportUpdateMode(QGraphicsView.FullViewportUpdate)
self.setCacheMode(QGraphicsView.CacheBackground)
self.setRenderHints(QPainter.Antialiasing |
QPainter.SmoothPixmapTransform | QPainter.TextAntialiasing)
if QGLFormat.hasOpenGL():
self.setViewport(QGLWidget(QGLFormat(QGL.SampleBuffers)))
stateMachine.start()
示例5: DocumentWindow
# 需要导入模块: from PyQt5.QtWidgets import QGraphicsScene [as 别名]
# 或者: from PyQt5.QtWidgets.QGraphicsScene import setItemIndexMethod [as 别名]
class DocumentWindow(QMainWindow, ui_mainwindow.Ui_MainWindow):
"""docstring for DocumentWindow"""
def __init__(self, parent=None, doc_ctrlr=None):
super(DocumentWindow, self).__init__(parent)
self.controller = doc_ctrlr
doc = doc_ctrlr.document()
self.setupUi(self)
self.settings = QSettings()
self._readSettings()
# Slice setup
self.slicescene = QGraphicsScene(parent=self.slice_graphics_view)
self.sliceroot = SliceRootItem(rect=self.slicescene.sceneRect(),\
parent=None,\
window=self,\
document=doc)
self.sliceroot.setFlag(QGraphicsItem.ItemHasNoContents)
self.slicescene.addItem(self.sliceroot)
self.slicescene.setItemIndexMethod(QGraphicsScene.NoIndex)
assert self.sliceroot.scene() == self.slicescene
self.slice_graphics_view.setScene(self.slicescene)
self.slice_graphics_view.scene_root_item = self.sliceroot
self.slice_graphics_view.setName("SliceView")
self.slice_tool_manager = SliceToolManager(self)
# Part toolbar
splitter_size_policy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred)
splitter_size_policy.setHorizontalStretch(0)
splitter_size_policy.setVerticalStretch(0)
splitter_size_policy.setHeightForWidth(self.main_splitter.sizePolicy().hasHeightForWidth())
self.slice_splitter.setSizePolicy(splitter_size_policy)
self.slice_splitter.setFrameShape(QFrame.NoFrame)
self.slice_splitter.setFrameShadow(QFrame.Plain)
self.slice_splitter.setLineWidth(0)
self.slice_splitter.setOrientation(Qt.Horizontal)
self.slice_splitter.setOpaqueResize(False)
self.slice_splitter.setHandleWidth(0)
self.part_toolbar = PartToolBar(doc, self.slice_splitter)
self.slice_splitter.addWidget(self.slice_graphics_view) # reorder
# Path setup
self.pathscene = QGraphicsScene(parent=self.path_graphics_view)
self.pathroot = PathRootItem(rect=self.pathscene.sceneRect(),\
parent=None,\
window=self,\
document=doc)
self.pathroot.setFlag(QGraphicsItem.ItemHasNoContents)
self.pathscene.addItem(self.pathroot)
self.pathscene.setItemIndexMethod(QGraphicsScene.NoIndex)
assert self.pathroot.scene() == self.pathscene
self.path_graphics_view.setScene(self.pathscene)
self.path_graphics_view.scene_root_item = self.pathroot
self.path_graphics_view.setScaleFitFactor(0.9)
self.path_graphics_view.setName("PathView")
# Path toolbar
self.path_splitter.setSizePolicy(splitter_size_policy)
self.path_splitter.setFrameShape(QFrame.NoFrame)
self.path_splitter.setFrameShadow(QFrame.Plain)
self.path_splitter.setLineWidth(0)
self.path_splitter.setOrientation(Qt.Horizontal)
self.path_splitter.setOpaqueResize(False)
self.path_splitter.setHandleWidth(0)
self.path_splitter.setObjectName("path_splitter")
self.path_splitter.setSizes([600,0]) # for path_splitter horizontal
self.path_splitter.addWidget(self.selectionToolBar)
self.path_toolbar = PathToolBar(doc, self.path_splitter)
# self.path_splitter.addWidget(self.path_graphics_view) # reorder
self.path_color_panel = ColorPanel()
self.path_graphics_view.toolbar = self.path_color_panel # HACK for customqgraphicsview
self.pathscene.addItem(self.path_color_panel)
self.path_tool_manager = PathToolManager(self, self.path_toolbar)
self.slice_tool_manager.path_tool_manager = self.path_tool_manager
self.path_tool_manager.slice_tool_manager = self.slice_tool_manager
# set the selection filter default
doc.documentSelectionFilterChangedSignal.emit(["endpoint", "scaffold", "staple", "xover"])
self.path_graphics_view.setupGL()
self.slice_graphics_view.setupGL()
if GL:
pass
# self.slicescene.drawBackground = self.drawBackgroundGL
# self.pathscene.drawBackground = self.drawBackgroundGL
# Edit menu setup
self.actionUndo = doc_ctrlr.undoStack().createUndoAction(self)
self.actionRedo = doc_ctrlr.undoStack().createRedoAction(self)
self.actionUndo.setText(QApplication.translate(
"MainWindow", "Undo",
None))
self.actionUndo.setShortcut(QApplication.translate(
"MainWindow", "Ctrl+Z",
None))
self.actionRedo.setText(QApplication.translate(
"MainWindow", "Redo",
None))
#.........这里部分代码省略.........
示例6: MainWindow
# 需要导入模块: from PyQt5.QtWidgets import QGraphicsScene [as 别名]
# 或者: from PyQt5.QtWidgets.QGraphicsScene import setItemIndexMethod [as 别名]
class MainWindow(QGraphicsView):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.updateTimer = QTimer(self)
self.demoStartTime = QTime()
self.fpsTime = QTime()
self.background = QPixmap()
self.scene = None
self.mainSceneRoot = None
self.frameTimeList = []
self.fpsHistory = []
self.currentFps = Colors.fps
self.fpsMedian = -1
self.fpsLabel = None
self.pausedLabel = None
self.doneAdapt = False
self.useTimer = False
self.updateTimer.setSingleShot(True)
self.companyLogo = None
self.qtLogo = None
self.setupWidget()
self.setupScene()
self.setupSceneItems()
self.drawBackgroundToPixmap()
def setupWidget(self):
desktop = QApplication.desktop()
screenRect = desktop.screenGeometry(desktop.primaryScreen())
windowRect = QRect(0, 0, 800, 600)
if screenRect.width() < 800:
windowRect.setWidth(screenRect.width())
if screenRect.height() < 600:
windowRect.setHeight(screenRect.height())
windowRect.moveCenter(screenRect.center())
self.setGeometry(windowRect)
self.setMinimumSize(80, 60)
self.setWindowTitle("PyQt Examples")
self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.setFrameStyle(QFrame.NoFrame)
self.setRenderingSystem()
self.updateTimer.timeout.connect(self.tick)
def setRenderingSystem(self):
self.setCacheMode(QGraphicsView.CacheBackground)
self.setViewport(QWidget())
def start(self):
self.switchTimerOnOff(True)
self.demoStartTime.restart()
MenuManager.instance().itemSelected(MenuManager.ROOT,
Colors.rootMenuName)
Colors.debug("- starting demo")
def enableMask(self, enable):
if not enable or Colors.noWindowMask:
self.clearMask()
else:
region = QPolygon([
# North side.
0, 0,
800, 0,
# East side.
# 800, 70,
# 790, 90,
# 790, 480,
# 800, 500,
800, 600,
# South side.
700, 600,
670, 590,
130, 590,
100, 600,
0, 600,
# West side.
# 0, 550,
# 10, 530,
# 10, 520,
# 0, 520,
0, 0])
self.setMask(QRegion(region))
def setupScene(self):
self.scene = QGraphicsScene(self)
self.scene.setSceneRect(0, 0, 800, 600)
self.setScene(self.scene)
self.scene.setItemIndexMethod(QGraphicsScene.NoIndex)
def switchTimerOnOff(self, on):
ticker = MenuManager.instance().ticker
if ticker and ticker.scene():
#.........这里部分代码省略.........
示例7: import
# 需要导入模块: from PyQt5.QtWidgets import QGraphicsScene [as 别名]
# 或者: from PyQt5.QtWidgets.QGraphicsScene import setItemIndexMethod [as 别名]
from PyQt5.QtCore import (qAbs, QLineF, QPointF, QRectF, qrand, qsrand, Qt,
QTime, QTimer)
from PyQt5.QtGui import (QBrush, QColor, QPainter, QPainterPath, QPixmap,
QPolygonF)
from PyQt5.QtWidgets import (QApplication, QGraphicsItem, QGraphicsScene,
QGraphicsView, QGraphicsWidget)
if __name__ == '__main__':
import sys
MouseCount = 7
app = QApplication(sys.argv)
scene = QGraphicsScene()
scene.setSceneRect(-300, -300, 600, 600)
scene.setItemIndexMethod(QGraphicsScene.NoIndex)
view = QGraphicsView(scene)
view.setRenderHint(QPainter.Antialiasing)
view.setViewportUpdateMode(QGraphicsView.BoundingRectViewportUpdate)
view.setDragMode(QGraphicsView.ScrollHandDrag)
view.resize(400, 300)
view.show()
sys.exit(app.exec_())
示例8: DocumentWindow
# 需要导入模块: from PyQt5.QtWidgets import QGraphicsScene [as 别名]
# 或者: from PyQt5.QtWidgets.QGraphicsScene import setItemIndexMethod [as 别名]
class DocumentWindow(QMainWindow, ui_mainwindow.Ui_MainWindow):
"""DocumentWindow subclasses QMainWindow and Ui_MainWindow. It performs
some initialization operations that must be done in code rather than
using Qt Creator.
Attributes:
controller (DocumentController):
"""
def __init__(self, parent=None, doc_ctrlr=None):
super(DocumentWindow, self).__init__(parent)
self.controller = doc_ctrlr
doc = doc_ctrlr.document()
self.setupUi(self)
self.settings = QSettings()
self._readSettings()
# self.setCentralWidget(self.slice_graphics_view)
# Appearance pref
if not app().prefs.show_icon_labels:
self.main_toolbar.setToolButtonStyle(Qt.ToolButtonIconOnly)
# Outliner & PropertyEditor setup
self.outliner_widget.configure(window=self, document=doc)
self.property_widget.configure(window=self, document=doc)
self.property_buttonbox.setVisible(False)
self.tool_managers = None # initialize
# Slice setup
self.slicescene = QGraphicsScene(parent=self.slice_graphics_view)
self.sliceroot = SliceRootItem(rect=self.slicescene.sceneRect(),
parent=None,
window=self,
document=doc)
self.sliceroot.setFlag(QGraphicsItem.ItemHasNoContents)
self.slicescene.addItem(self.sliceroot)
self.slicescene.setItemIndexMethod(QGraphicsScene.NoIndex)
assert self.sliceroot.scene() == self.slicescene
self.slice_graphics_view.setScene(self.slicescene)
self.slice_graphics_view.scene_root_item = self.sliceroot
self.slice_graphics_view.setName("SliceView")
self.slice_tool_manager = SliceToolManager(self, self.sliceroot)
# Path setup
self.pathscene = QGraphicsScene(parent=self.path_graphics_view)
self.pathroot = PathRootItem(rect=self.pathscene.sceneRect(),
parent=None,
window=self,
document=doc)
self.pathroot.setFlag(QGraphicsItem.ItemHasNoContents)
self.pathscene.addItem(self.pathroot)
self.pathscene.setItemIndexMethod(QGraphicsScene.NoIndex)
assert self.pathroot.scene() == self.pathscene
self.path_graphics_view.setScene(self.pathscene)
self.path_graphics_view.scene_root_item = self.pathroot
self.path_graphics_view.setScaleFitFactor(0.9)
self.path_graphics_view.setName("PathView")
# Path toolbar
self.path_color_panel = ColorPanel()
self.path_graphics_view.toolbar = self.path_color_panel # HACK for customqgraphicsview
self.pathscene.addItem(self.path_color_panel)
self.path_tool_manager = PathToolManager(self, self.pathroot)
self.slice_tool_manager.path_tool_manager = self.path_tool_manager
self.path_tool_manager.slice_tool_manager = self.slice_tool_manager
self.tool_managers = (self.path_tool_manager, self.slice_tool_manager)
self.insertToolBarBreak(self.main_toolbar)
self.path_graphics_view.setupGL()
self.slice_graphics_view.setupGL()
# Edit menu setup
self.actionUndo = doc_ctrlr.undoStack().createUndoAction(self)
self.actionRedo = doc_ctrlr.undoStack().createRedoAction(self)
self.actionUndo.setText(QApplication.translate("MainWindow", "Undo", None))
self.actionUndo.setShortcut(QApplication.translate("MainWindow", "Ctrl+Z", None))
self.actionRedo.setText(QApplication.translate("MainWindow", "Redo", None))
self.actionRedo.setShortcut(QApplication.translate("MainWindow", "Ctrl+Shift+Z", None))
self.sep = QAction(self)
self.sep.setSeparator(True)
self.menu_edit.insertAction(self.sep, self.actionRedo)
self.menu_edit.insertAction(self.actionRedo, self.actionUndo)
self.main_splitter.setSizes([400, 400, 180]) # balance main_splitter size
self.statusBar().showMessage("")
doc.setViewNames(['slice', 'path'])
# end def
def document(self):
return self.controller.document()
# end def
def destroyWin(self):
for mgr in self.tool_managers:
mgr.destroy()
self.controller = None
# end def
### ACCESSORS ###
def undoStack(self):
return self.controller.undoStack()
#.........这里部分代码省略.........
示例9: MainWindow
# 需要导入模块: from PyQt5.QtWidgets import QGraphicsScene [as 别名]
# 或者: from PyQt5.QtWidgets.QGraphicsScene import setItemIndexMethod [as 别名]
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
# read .ui file from QtDesigner
__location__ = os.path.realpath(os.path.join(os.getcwd(), os.path.dirname(__file__)))
f = open(os.path.join(__location__, 'ui_window.ui'));
uic.loadUi(f, self)
self.doc = None
self.setupUI()
def setupUI(self):
# actions
root = QFileInfo(__file__).absolutePath()
# self.actionUndo = QAction(QIcon(root+'/images/Undo-icon.png'),"undo",self)
# self.actionMerge_domain = QAction(self)
# self.actionCreate_toehold = QAction(self)
# self.actionResize_toehold = QAction(self)
# self.actionRemove_toehold = QAction(self)
# connect menuBar, toolBar, dockWidget to self(mainWindow)
self.dockWidget = DockWidget(self)
self.menuBar = MenuBar(self)
self.toolBar = ToolBar(self)
self.addDockWidget(QtCore.Qt.RightDockWidgetArea,self.dockWidget)
# main window setup
root = QFileInfo(__file__).absolutePath()
self.setWindowTitle('OtraCAD')
self.setWindowIcon((QIcon(root+'/images/bug.png')))
# splitter allows user control the size of child widgets by dragging the boundary between the children
self.main_splitter = QtWidgets.QSplitter(self.centralwidget)
self.path_splitter = QtWidgets.QSplitter(self.main_splitter)
# renderView is where .json file is rendered in the window;
# CustomQGraphicsView extends QGraphicsView, allow zooming in/out and drag by using "command+click"
self.renderView = CustomQGraphicsView(self.path_splitter)
# size polices
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.renderView.sizePolicy().hasHeightForWidth())
self.renderView.setSizePolicy(sizePolicy)
self.renderView.setMinimumSize(QtCore.QSize(0, 0))
self.renderView.setMouseTracking(True)
self.renderView.setFocusPolicy(QtCore.Qt.WheelFocus)
self.renderView.setFrameShadow(QtWidgets.QFrame.Plain)
self.renderView.setLineWidth(0)
self.renderView.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
self.renderView.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
self.renderView.setRenderHints(QtGui.QPainter.Antialiasing|QtGui.QPainter.HighQualityAntialiasing|QtGui.QPainter.TextAntialiasing)
self.renderView.setTransformationAnchor(QtWidgets.QGraphicsView.AnchorUnderMouse)
self.renderView.setObjectName("renderView")
self.renderView.setupGL(self)
self.gridLayout.addWidget(self.main_splitter, 0, 0, 1, 1)
def updateRenderView(self,doc_ctrl):
# set up render view to render imported .json file
self.pathscene = QGraphicsScene(parent=self.renderView)
self.pathroot = PathRootItem(rect=self.pathscene.sceneRect(),\
parent=None,\
window=self,\
document= doc_ctrl._document)
self.pathroot.setFlag(QGraphicsItem.ItemHasNoContents)
self.pathscene.addItem(self.pathroot)
self.pathscene.setItemIndexMethod(QGraphicsScene.NoIndex)
assert self.pathroot.scene() == self.pathscene
self.renderView.setScene(self.pathscene)
self.renderView.scene_root_item = self.pathroot
self.renderView._scale_fit_factor = 0.9
self.renderView._name = 'renderView'
#end def
def setDoc(self,doc):
# set documents for all child widgets
self.doc = doc
self.dockWidget.doc = doc
self.toolBar.doc = doc
示例10: ClassDiagram
# 需要导入模块: from PyQt5.QtWidgets import QGraphicsScene [as 别名]
# 或者: from PyQt5.QtWidgets.QGraphicsScene import setItemIndexMethod [as 别名]
class ClassDiagram(QWidget, itab_item.ITabItem):
def __init__(self, actions, parent=None):
super(ClassDiagram, self).__init__(parent)
self.actions = actions
self.graphicView = QGraphicsView(self)
self.scene = QGraphicsScene()
self.graphicView.setScene(self.scene)
self.graphicView.setViewportUpdateMode(
QGraphicsView.BoundingRectViewportUpdate)
vLayout = QVBoxLayout(self)
self.setLayout(vLayout)
vLayout.addWidget(self.graphicView)
self.scene.setItemIndexMethod(QGraphicsScene.NoIndex)
self.scene.setSceneRect(-200, -200, 400, 400)
self.graphicView.setMinimumSize(400, 400)
actualProject = self.actions.ide.explorer.get_actual_project()
arrClasses = self.actions._locator.get_classes_from_project(
actualProject)
#FIXME:dirty need to fix
self.mX = -400
self.mY = -320
self.hightestY = self.mY
filesList = []
for elem in arrClasses:
#loking for paths
filesList.append(elem[2])
for path in set(filesList):
self.create_class(path)
def create_class(self, path):
content = file_manager.read_file_content(path)
items = introspection.obtain_symbols(content)
mYPadding = 10
mXPadding = 10
for classname, classdetail in list(items["classes"].items()):
cl = ClassModel(self.graphicView, self.scene)
cl.set_class_name(classname)
self.fill_clases(cl, classdetail[1])
self.scene.addItem(cl)
cl.setPos(self.mX, self.mY)
self.mX += cl._get_width() + mXPadding
if self.hightestY < self.mY + cl.get_height():
self.hightestY = self.mY + cl.get_height()
if self.mX > 2000:
self.mX = -400
self.mY += self.hightestY + mYPadding
def fill_clases(self, classComponent, classContent):
funct = classContent['functions']
classComponent.set_functions_list(funct)
attr = classContent['attributes']
classComponent.set_attributes_list(attr)
def scale_view(self, scaleFactor):
factor = self.graphicView.transform().scale(
scaleFactor, scaleFactor).mapRect(QRectF(0, 0, 1, 1)).width()
if factor > 0.05 and factor < 15:
self.graphicView.scale(scaleFactor, scaleFactor)
def keyPressEvent(self, event):
taskList = {
Qt.Key_Plus: lambda: self.scaleView(1.2),
Qt.Key_Minus: lambda: self.scaleView(1 / 1.2)}
if(event.key() in taskList):
taskList[event.key()]()
else:
QWidget.keyPressEvent(self, event)