当前位置: 首页>>代码示例>>Python>>正文


Python QGraphicsScene.addWidget方法代码示例

本文整理汇总了Python中PyQt5.QtWidgets.QGraphicsScene.addWidget方法的典型用法代码示例。如果您正苦于以下问题:Python QGraphicsScene.addWidget方法的具体用法?Python QGraphicsScene.addWidget怎么用?Python QGraphicsScene.addWidget使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在PyQt5.QtWidgets.QGraphicsScene的用法示例。


在下文中一共展示了QGraphicsScene.addWidget方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: MainWindow

# 需要导入模块: from PyQt5.QtWidgets import QGraphicsScene [as 别名]
# 或者: from PyQt5.QtWidgets.QGraphicsScene import addWidget [as 别名]
class MainWindow(MainControlMixin, MainEventsMixin, QMainWindow):
    def __init__(self):
        logger.info('%s init', self.__class__.__qualname__)
        super().__init__()
        self._setupWindow()
        self._attachElements()
        self._setupContextMenu()

    @inject.params(gs=GState)
    def reloadState(self, chgs={}, gs=None):
        if gs.cfg:
            self.setupDynamic(gs.cfg)
        if gs.bud or gs.bReload['Window']:
            # self.scene.clear()
            # self.wdg = BudWidget(gs.bud, gs.cfg)
            # self.scene.addWidget(self.wdg)
            self.wdg.refreshBuds()
            self.centerOnCursor()
        if chgs.get('toggle', False):
            self.setVisible(not self.isVisible())

    def _attachElements(self):
        self.ipr = InputProcessor()
        self.wdg = BudWidget()
        self.scene = QGraphicsScene()
        self.scene.addWidget(self.wdg)
        self.view = MainView(self.scene)
        self.setCentralWidget(self.view)

    def _setupWindow(self):
        self.setAttribute(Qt.WA_TranslucentBackground)
        wflags = Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint | Qt.Tool
        self.setWindowFlags(self.windowFlags() | wflags)
        self.installEventFilter(self)
        self.setMouseTracking(True)

        self.setMinimumSize(10, 10)
        self.setWindowTitle("{} {}".format(
            piony.__appname__, piony.__version__))

    def _setupContextMenu(self):
        from PyQt5.QtWidgets import QAction
        # SEE: http://doc.qt.io/qt-5/qtwidgets-mainwindows-menus-example.html
        aQuit = QAction("E&xit", self, shortcut="Ctrl+Q",
                        shortcutContext=Qt.ApplicationShortcut,
                        triggered=qApp.quit)
        self.addAction(aQuit)
        # TODO: for release use Qt.NoContextMenu, enable only in edit-mode
        self.setContextMenuPolicy(Qt.ActionsContextMenu)
开发者ID:gitter-badger,项目名称:piony,代码行数:51,代码来源:window.py

示例2: Minimap2

# 需要导入模块: from PyQt5.QtWidgets import QGraphicsScene [as 别名]
# 或者: from PyQt5.QtWidgets.QGraphicsScene import addWidget [as 别名]
class Minimap2(QGraphicsView):

    '''
    Minimap
    '''

    def __init__(self, parent=0):
        '''
        Constructor
        '''

        super(Minimap2, self).__init__(parent)

        self._scene = QGraphicsScene()
        self.setRenderHint(QPainter.Antialiasing, True)
        self._text_browser = TextBrowser()
        self._scrollbar = None
        self.setAutoFillBackground(True)

#        try:
#            from PyQt5.QtWidgets import QOpenGLWidget
#            self.setViewport(QOpenGLWidget())
# except ImportError: # work around for pyQt 5.2
#            from PyQt5.QtOpenGL import QGLWidget
#            self.setViewport(QGLWidget())

        self.setScene(self._scene)
        self.setAlignment(Qt.AlignTop)
        self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)

        # cursor:
        self._nav_cursor = Cursor()
        self._nav_cursor.graphics_view = self
        self._scene.addItem(self._nav_cursor)
        self._nav_cursor.setZValue(1)

        self._text_edit = None
        self._minimap_doc = None
        self._doc = None

        self._graphics_proxy_text_browser = self._scene.addWidget(
            self._text_browser)
        self._scale = 0.2
        self._graphics_proxy_text_browser.setScale(self._scale)

    def update_minimap_doc(self, position, charsRemoved, charsAdded):

        def select_blocks(first_block,  last_block):
            first_block_pos = first_block.position()
            doc_cursor.setPosition(first_block_pos)
            last_block_pos = last_block.position()
            doc_cursor.setPosition(last_block_pos,  QTextCursor.KeepAnchor)
            doc_cursor.movePosition(
                QTextCursor.EndOfBlock,  QTextCursor.KeepAnchor)
            print("selected text :",  doc_cursor.selectedText())
            return doc_cursor.selectedText()

        doc_cursor = QTextCursor(self._doc)
        minimap_cursor = QTextCursor(self._minimap_doc)

        # IF one same block is modified
        if self._minimap_doc.blockCount() == self._doc.blockCount():
            doc_cursor.setPosition(position)
            doc_cursor.select(QTextCursor.BlockUnderCursor)
            minimap_cursor.setPosition(position)
            minimap_cursor.select(QTextCursor.BlockUnderCursor)
            minimap_cursor.insertFragment(doc_cursor.selection())
        # TODO: if the doc is modified on more than one block but resulting in
        # the same count of blocks (right now only the first block would be
        # updated)
        else:
            # ELSE
            doc_cursor.select(QTextCursor.Document)
            minimap_cursor.select(QTextCursor.Document)
            minimap_cursor.insertFragment(doc_cursor.selection())

    @property
    def text_edit(self):
        return self._text_edit

    @text_edit.setter
    def text_edit(self, text_edit):
        if not isinstance(text_edit, QTextEdit):
            return
        self._text_edit = text_edit
        # self._text_edit.textChanged.connect(self.update)
        # self._scrollbar.valueChanged.connect(self._change_cursor_pos)

        self.setFixedWidth(self._text_edit.width() * self._scale)

        self._doc = self._text_edit.document()

        # connect scrollbar
        baseScrollBar = self._text_edit.verticalScrollBar()
        baseScrollBar.rangeChanged.connect(self._set_scrollBar_range)
        # baseScrollBar.valueChanged.connect(self._text_browser.verticalScrollBar().setValue)
        self._text_browser.verticalScrollBar().valueChanged.connect(
            baseScrollBar.setValue)
        self._text_browser.verticalScrollBar().hide()
#.........这里部分代码省略.........
开发者ID:ParaplegicRacehorse,项目名称:plume-creator,代码行数:103,代码来源:minimap_text_browser.py

示例3: GUI

# 需要导入模块: from PyQt5.QtWidgets import QGraphicsScene [as 别名]
# 或者: from PyQt5.QtWidgets.QGraphicsScene import addWidget [as 别名]
class GUI(Ui_MainWindow):
    def __init__(self):
        super().setupUi(MainWindow)
        self.initUI()
    #connect widgets with functions
    def initUI(self):
        self.scene1=QGraphicsScene()
        self.scene2=QGraphicsScene()
        self.scene3=QGraphicsScene()
        self.scene4=QGraphicsScene()
        self.actionOpen.triggered.connect(self.imageOpen)
        self.histogram.clicked.connect(self.imageHistogram)
        self.GrayvalueScrollBar.valueChanged.connect(self.sliderval)
        self.OTSU.clicked.connect(self.OTSUThreshold)
        self.MedianFilter.clicked.connect(self.medianfilter)
        self.MeanFilter.clicked.connect(self.meanfilter)
        self.GaussianFilter.clicked.connect(self.gaussianfilter)
        self.CoustomizedFilter.clicked.connect(self.coustomizefilter)
        self.BinaryErosion.clicked.connect(self.binaryerosion)
        self.BinaryDilation.clicked.connect(self.binarydilation)
        self.actionClear_All.triggered.connect(self.clearall)
        self.DistanceTransform.clicked.connect(self.distancetransform)
        self.Skeleton.clicked.connect(self.skeleton)
        self.SkeletonRestoration.clicked.connect(self.skeletonrestoration)
        self.GrayErosion.clicked.connect(self.grayerosion)
        self.GrayDilation.clicked.connect(self.graydilation)
        self.EdgeDetection.clicked.connect(self.edgedetection)
        self.Gradient.clicked.connect(self.gradient)
        self.Reconstraction_Binary.clicked.connect(self.reconstruction_binary)
        self.Reconstraction_Gray.clicked.connect(self.reconstruction_gray)

    #function menubar-file-open: Open image and show it in view1
    def imageOpen(self):
#        filename,_ = QFileDialog.getOpenFileName(MainWindow,'Open a image',os.getenv('HOME'))
        filename,_ = QFileDialog.getOpenFileName(MainWindow,'Open a image','.',"Image Files(*.bmp *jpg *png *jpeg)")
#        filename="/home/lab105/git-sen/python_gui/lena512.bmp"
#        print(filename)
        pix=QtGui.QPixmap(filename)
        pix=pix.scaledToHeight(256)
        self.image=plt.imread(filename)
        Size=self.image.shape
        if (len(Size)==3):
            if (type(self.image[1,1,1]) is np.float32):
                self.image=misc.imread(filename) 
            self.image=self.image[:,:,1]
        self.image_temp=self.image
        self.scene1.addPixmap(QPixmap(pix))
        self.View1.setScene(self.scene1)
        self.clearall()

    #function mainwindow tab histogram-greylevel histogram: compute and show the greyvalue histogram in view 2
    def imageHistogram(self):
        greyimage=self.image
        #greyimage.dtype
        Height, Width=greyimage.shape
        x=np.zeros(Height*Width)
        for h in range(Height):
            for w in range(Width):
                x[h*Height+w]=greyimage[h,w]

        num_bins=255
        plt.figure(figsize=(256,256),dpi=1)
        n,self.bins,patches=plt.hist(x,num_bins,normed=1,facecolor='green',alpha=0.5)
        plt.axis("off")
        plt.gca().set_position([0,0,1,1])
        self.figure=plt.gcf()
        canvas2=FigureCanvas(self.figure)
        self.scene2.addWidget(canvas2)
        self.View2.setScene(self.scene2)


    def sliderval(self):
        Threshold=self.GrayvalueScrollBar.value()
        self.Binarization(Threshold)
#        self.label.setText(str(Threshold))

    #threshlod function 
    def Binarization(self,Threshold):
        #filename="/home/lab105/git-sen/python_gui/lena512.bmp"
        #img=misc.imread(filename)
        img=self.image
        BinaryArray= img >Threshold
        plt.close(3)
        plt.figure(num=3,figsize=(256,256),dpi=1)
        plt.axis("off")
        plt.gca().set_position([0,0,1,1]) 
        plt.imshow(BinaryArray,cmap='binary_r')
        figure3=plt.gcf()
        canvas3=FigureCanvas(figure3)
        self.scene3.clear()
        self.scene3.addWidget(canvas3)
        self.View3.setScene(self.scene3)
        self.label.setText(str(Threshold))

    def OTSUThreshold(self):
        img=self.image
        thresh=threshold_otsu(img)
        binary=img > thresh
        self.showView4(binary)

#.........这里部分代码省略.........
开发者ID:siyhust,项目名称:python_gui,代码行数:103,代码来源:Project.py


注:本文中的PyQt5.QtWidgets.QGraphicsScene.addWidget方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。