def __init__(self, parent=None, *args, **kargs): background = kargs.get('background', 'k') GraphicsView.__init__(self, parent, useOpenGL=False, background=background) self.item = HistogramLUTItem(*args, **kargs) self.setCentralItem(self.item) self.setSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Expanding) self.setMinimumWidth(92)
def __init__(self, parent=None, **kargs): GraphicsView.__init__(self, parent) self.ci = GraphicsLayout(**kargs) for n in [ 'nextRow', 'nextCol', 'nextColumn', 'addPlot', 'addViewBox', 'addItem', 'getItem', 'addLabel', 'addLayout' ]: setattr(self, n, getattr(self.ci, n)) self.setCentralItem(self.ci)
def __init__(self, parent=None, orientation='bottom', *args, **kargs): GraphicsView.__init__(self, parent, useOpenGL=False, background=None) self.maxDim = 27 kargs['tickPen'] = 'k' self.item = GradientEditorItem(*args, **kargs) self.item.sigGradientChanged.connect(self.sigGradientChanged) self.setCentralItem(self.item) self.setOrientation(orientation) self.setCacheMode(self.CacheNone) self.setRenderHints(QtGui.QPainter.Antialiasing | QtGui.QPainter.TextAntialiasing) self.setFrameStyle(QtGui.QFrame.NoFrame | QtGui.QFrame.Plain) self.setBackgroundRole(QtGui.QPalette.NoRole)
def iniGraphicsSystem(self, name=None): ##初始化 Graphics View系统 scene = GraphicsScene() # 创建QGraphicsScene view = GraphicsView(self, scene) # 创建图形视图组件 view.mouseMove.connect(self.do_mouseMove) # 鼠标移动 view.mouseClicked.connect(self.do_mouseClicked) # 左键按下 scene.itemMoveSignal.connect(self.do_shapeMoved) scene.itemLock.connect(self.do_nodeLock) scene.isHasItem.connect(self.do_checkIsHasItems) if name: title = name else: text = self.tr('未命名') title = f'{text}{self.ui.tabWidget.count()}' curIndex = self.ui.tabWidget.addTab(view, title) self.ui.tabWidget.setCurrentIndex(curIndex) self.ui.tabWidget.setVisible(True)
def close(self): self.mPlotItem.close() self.mPlotItem = None self.setParent(None) GraphicsView.close(self)
def __init__(self, parent=None): GraphicsView.__init__(self, parent) self.enableMouse(False) self.mPlotItem = MultiPlotItem.MultiPlotItem() self.setCentralItem(self.mPlotItem)
def setupUi2(self, GMainWindow): ''' 《QT5.9开发指南》示例代码(C++) samp8_5GraphicsDraw之UI手工部分 ''' self.labViewCord = QLabel("View:") self.labViewCord.setMinimumWidth(150) self.statusBar.addWidget(self.labViewCord) self.labSceneCord = QLabel("Scene:") self.labSceneCord.setMinimumWidth(150) self.statusBar.addWidget(self.labSceneCord) self.labItemCord = QLabel("Item:") self.labItemCord.setMinimumWidth(150) self.statusBar.addWidget(self.labItemCord) self.labItemInfo = QLabel("ItemInfo:") self.labItemInfo.setMinimumWidth(200) self.statusBar.addWidget(self.labItemInfo) #self.statusBar=QStatusBar() #self.labItemInfo.setMinimumSize(self.labItemInfo.sizeHint()) #self.labItemInfo.setAlignment(Qt.AlignHCenter) self.filename = "" self.copiedItem = QByteArray() self.pasteOffset = 5 self.prevPoint = QPoint() self.addOffset = 5 self.borders = [] #self.view = GraphicsView() self.view = GraphicsView(self.centralWidget) self.view.setGeometry(QtCore.QRect(10, 10, 641, 351)) self.view.setRenderHints(QtGui.QPainter.Antialiasing | QtGui.QPainter.TextAntialiasing) self.view.setDragMode(QtWidgets.QGraphicsView.RubberBandDrag) self.view.setObjectName("view") self.view.setCursor(Qt.CrossCursor) #设置鼠标 self.view.setMouseTracking(True) # // self.view.setDragMode(QGraphicsView.RubberBandDrag) self.scene = QGraphicsScene(-300,-200,600,400) #self #//创建QGraphicsScene #self.scene.setSceneRect(-PageSize[0]/2, -PageSize[1]/2, PageSize[0], PageSize[1]) self.view.setScene(self.scene) #//与view关联 self.addBorders() #slef.setCentralWidget(self.view) #设置view中自定义事件对应的槽函数 #button.clicked.connect(slot) self.view.mouseMovePoint.connect(self.on_mouseMovePoint) self.view.mouseClicked.connect(self.on_mouseClicked) self.view.mouseRelease.connect(self.on_mouseRelease) self.view.keyPress.connect(self.on_keyPress) self.view.mouseDoubleClick.connect(self.on_mouseDoubleClick) #qsrand(QTime.currentTime().second()) self.wrapped = [] # Needed to keep wrappers alive lebal1 = QLabel("CompositionMode:") self.comboBox = QtWidgets.QComboBox(self.centralWidget) self.comboBox.setGeometry(QtCore.QRect(70, 40, 87, 122)) self.comboBox.setObjectName("self.comboBox") self.comboBox.addItem("SourceOver",QPainter.CompositionMode_SourceOver) self.comboBox.addItem("DestinationOverlist1",QPainter.CompositionMode_DestinationOver) self.comboBox.addItem("Clear",QPainter.CompositionMode_Clear) self.comboBox.addItem("Source",QPainter.CompositionMode_Source) self.comboBox.addItem("Destination",QPainter.CompositionMode_Destination) self.comboBox.addItem("SourceIn",QPainter.CompositionMode_SourceIn) self.comboBox.addItem("DestinationIn",QPainter.CompositionMode_DestinationIn) self.comboBox.addItem("SourceOut",QPainter.CompositionMode_SourceOut) self.comboBox.addItem("DestinationOut",QPainter.CompositionMode_DestinationOut) self.comboBox.addItem("SourceAtop",QPainter.CompositionMode_SourceAtop) self.comboBox.addItem("DestinationAtoplist1",QPainter.CompositionMode_DestinationAtop) self.comboBox.addItem("Xor",QPainter.CompositionMode_Xor) self.comboBox.addItem("Plus",QPainter.CompositionMode_Plus) self.comboBox.addItem("Multiply",QPainter.CompositionMode_Multiply) self.comboBox.addItem("Screen",QPainter.CompositionMode_Screen) self.comboBox.addItem("Overlay",QPainter.CompositionMode_Overlay) self.comboBox.addItem("Darken",QPainter.CompositionMode_Darken) self.comboBox.addItem("Lighten",QPainter.CompositionMode_Lighten) self.comboBox.addItem("ColorDodge",QPainter.CompositionMode_ColorDodge) self.comboBox.addItem("ColorBurn",QPainter.CompositionMode_ColorBurn) self.comboBox.addItem("HardLight",QPainter.CompositionMode_HardLight) self.comboBox.addItem("SoftLight",QPainter.CompositionMode_SoftLight) self.comboBox.addItem("Difference",QPainter.CompositionMode_Difference) self.comboBox.addItem("Exclusion",QPainter.CompositionMode_Exclusion) self.comboBox.currentIndexChanged.connect(self.onCbChanged) #para is (int) self.comboBox.setEnabled(False) #变灰 ''' 以下部分原代码(QPushButton部分)复制来源: http://blog.sina.com.cn/s/blog_c22e36090102x1p3.html 《python3+PyQt5 图形项的自定义和交互--实现page Designer应用程序》 by basisworker in 2017-03-06 09:58:31 修改记录: 1.原主对话框类QDialog改为QMainWindow 2.图形像类拆分为独立模块文件 4.界面部分代码移到Ui2_MainWindow模块(类) ''' buttonLayout = QVBoxLayout() for text, slot in ( ("Add &Text", self.addText), ("Add &Box", self.addBox), ("Add Pi&xmap", self.addPixmap), ("&Align", None), ("&Copy", self.copy), ("C&ut", self.cut), ("&Paste", self.paste), ("&Delete...", self.delete), ("&Rotate", self.rotate), ("Pri&nt...", self.print_), ("&Open...", self.open), ("&Save", self.save), ("&Save As Pic", self.save_pic), ("&Quit", self.accept)): button = QPushButton(text) if not MAC: button.setFocusPolicy(Qt.NoFocus) if slot is not None: button.clicked.connect(slot) if text == "&Align": menu = QMenu(self) for text, arg in ( ("Align &Left", Qt.AlignLeft), ("Align &Right", Qt.AlignRight), ("Align &Top", Qt.AlignTop), ("Align &Bottom", Qt.AlignBottom)): wrapper = functools.partial(self.setAlignment, arg) self.wrapped.append(wrapper) menu.addAction(text, wrapper) button.setMenu(menu) if text == "Pri&nt...": buttonLayout.addWidget(lebal1) buttonLayout.addWidget(self.comboBox) buttonLayout.addStretch(5) if text == "&Quit": buttonLayout.addStretch(1) buttonLayout.addWidget(button) #逐个添加 in for loop buttonLayout.addStretch() layout = QHBoxLayout() layout.addWidget(self.view, 1) layout.addLayout(buttonLayout) self.centralWidget.setLayout(layout) #主对话框 #fm = QFontMetrics(self.font()) #self.resize(self.scene.width() + fm.width(" Delete... ") + 50, # self.scene.height() + 50) self.setWindowTitle("Page Designer")
def setupUi(self, Form): Form.setObjectName("Form") Form.resize(726, 588) self.verticalLayout = QtGui.QVBoxLayout(Form) self.verticalLayout.setSpacing(0) self.verticalLayout.setMargin(0) self.verticalLayout.setObjectName("verticalLayout") self.splitter = QtGui.QSplitter(Form) self.splitter.setOrientation(QtCore.Qt.Vertical) self.splitter.setObjectName("splitter") self.layoutWidget = QtGui.QWidget(self.splitter) self.layoutWidget.setObjectName("layoutWidget") self.gridLayout = QtGui.QGridLayout(self.layoutWidget) self.gridLayout.setMargin(0) self.gridLayout.setSpacing(0) self.gridLayout.setObjectName("gridLayout") self.graphicsView = GraphicsView(self.layoutWidget) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(10) sizePolicy.setVerticalStretch(10) sizePolicy.setHeightForWidth(self.graphicsView.sizePolicy().hasHeightForWidth()) self.graphicsView.setSizePolicy(sizePolicy) self.graphicsView.setObjectName("graphicsView") self.gridLayout.addWidget(self.graphicsView, 1, 0, 3, 1) self.roiBtn = QtGui.QPushButton(self.layoutWidget) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(1) sizePolicy.setHeightForWidth(self.roiBtn.sizePolicy().hasHeightForWidth()) self.roiBtn.setSizePolicy(sizePolicy) self.roiBtn.setMaximumSize(QtCore.QSize(30, 16777215)) self.roiBtn.setCheckable(True) self.roiBtn.setObjectName("roiBtn") self.gridLayout.addWidget(self.roiBtn, 3, 3, 1, 1) self.gradientWidget = GradientWidget(self.layoutWidget) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(100) sizePolicy.setHeightForWidth(self.gradientWidget.sizePolicy().hasHeightForWidth()) self.gradientWidget.setSizePolicy(sizePolicy) self.gradientWidget.setObjectName("gradientWidget") self.gridLayout.addWidget(self.gradientWidget, 1, 3, 1, 1) self.normBtn = QtGui.QPushButton(self.layoutWidget) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(1) sizePolicy.setHeightForWidth(self.normBtn.sizePolicy().hasHeightForWidth()) self.normBtn.setSizePolicy(sizePolicy) self.normBtn.setMaximumSize(QtCore.QSize(30, 16777215)) self.normBtn.setCheckable(True) self.normBtn.setObjectName("normBtn") self.gridLayout.addWidget(self.normBtn, 2, 3, 1, 1) self.normGroup = QtGui.QGroupBox(self.layoutWidget) self.normGroup.setObjectName("normGroup") self.gridLayout_2 = QtGui.QGridLayout(self.normGroup) self.gridLayout_2.setMargin(0) self.gridLayout_2.setSpacing(0) self.gridLayout_2.setObjectName("gridLayout_2") self.normSubtractRadio = QtGui.QRadioButton(self.normGroup) self.normSubtractRadio.setObjectName("normSubtractRadio") self.gridLayout_2.addWidget(self.normSubtractRadio, 0, 2, 1, 1) self.normDivideRadio = QtGui.QRadioButton(self.normGroup) self.normDivideRadio.setChecked(False) self.normDivideRadio.setObjectName("normDivideRadio") self.gridLayout_2.addWidget(self.normDivideRadio, 0, 1, 1, 1) self.label_5 = QtGui.QLabel(self.normGroup) font = QtGui.QFont() font.setWeight(75) font.setBold(True) self.label_5.setFont(font) self.label_5.setObjectName("label_5") self.gridLayout_2.addWidget(self.label_5, 0, 0, 1, 1) self.label_3 = QtGui.QLabel(self.normGroup) font = QtGui.QFont() font.setWeight(75) font.setBold(True) self.label_3.setFont(font) self.label_3.setObjectName("label_3") self.gridLayout_2.addWidget(self.label_3, 1, 0, 1, 1) self.label_4 = QtGui.QLabel(self.normGroup) font = QtGui.QFont() font.setWeight(75) font.setBold(True) self.label_4.setFont(font) self.label_4.setObjectName("label_4") self.gridLayout_2.addWidget(self.label_4, 2, 0, 1, 1) self.normROICheck = QtGui.QCheckBox(self.normGroup) self.normROICheck.setObjectName("normROICheck") self.gridLayout_2.addWidget(self.normROICheck, 1, 1, 1, 1) self.normXBlurSpin = QtGui.QDoubleSpinBox(self.normGroup) self.normXBlurSpin.setObjectName("normXBlurSpin") self.gridLayout_2.addWidget(self.normXBlurSpin, 2, 2, 1, 1) self.label_8 = QtGui.QLabel(self.normGroup) self.label_8.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.label_8.setObjectName("label_8") self.gridLayout_2.addWidget(self.label_8, 2, 1, 1, 1) self.label_9 = QtGui.QLabel(self.normGroup) self.label_9.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.label_9.setObjectName("label_9") self.gridLayout_2.addWidget(self.label_9, 2, 3, 1, 1) self.normYBlurSpin = QtGui.QDoubleSpinBox(self.normGroup) self.normYBlurSpin.setObjectName("normYBlurSpin") self.gridLayout_2.addWidget(self.normYBlurSpin, 2, 4, 1, 1) self.label_10 = QtGui.QLabel(self.normGroup) self.label_10.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.label_10.setObjectName("label_10") self.gridLayout_2.addWidget(self.label_10, 2, 5, 1, 1) self.normOffRadio = QtGui.QRadioButton(self.normGroup) self.normOffRadio.setChecked(True) self.normOffRadio.setObjectName("normOffRadio") self.gridLayout_2.addWidget(self.normOffRadio, 0, 3, 1, 1) self.normTimeRangeCheck = QtGui.QCheckBox(self.normGroup) self.normTimeRangeCheck.setObjectName("normTimeRangeCheck") self.gridLayout_2.addWidget(self.normTimeRangeCheck, 1, 3, 1, 1) self.normFrameCheck = QtGui.QCheckBox(self.normGroup) self.normFrameCheck.setObjectName("normFrameCheck") self.gridLayout_2.addWidget(self.normFrameCheck, 1, 2, 1, 1) self.normTBlurSpin = QtGui.QDoubleSpinBox(self.normGroup) self.normTBlurSpin.setObjectName("normTBlurSpin") self.gridLayout_2.addWidget(self.normTBlurSpin, 2, 6, 1, 1) self.gridLayout.addWidget(self.normGroup, 0, 0, 1, 4) self.roiPlot = PlotWidget(self.splitter) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.roiPlot.sizePolicy().hasHeightForWidth()) self.roiPlot.setSizePolicy(sizePolicy) self.roiPlot.setMinimumSize(QtCore.QSize(0, 40)) self.roiPlot.setObjectName("roiPlot") self.verticalLayout.addWidget(self.splitter) self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form)
def __init__(self, parent=None, **kargs): GraphicsView.__init__(self, parent) self.ci = GraphicsLayout(**kargs) for n in ['nextRow', 'nextCol', 'nextColumn', 'addPlot', 'addViewBox', 'addItem', 'getItem', 'addLabel', 'addLayout']: setattr(self, n, getattr(self.ci, n)) self.setCentralItem(self.ci)