从任意对象(Python和Qt)向textbox发送文本

2024-09-29 21:26:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要能够从类“node”发送文本节点.py公司名称:

import datetime

from PyQt4.QtCore import *
from PyQt4.QtGui import *

class node( QGraphicsItem ):
    def __init__( self, position, scene ):
        super( node, self ).__init__( None, scene )

        self.setFlags( QGraphicsItem.ItemIsSelectable | QGraphicsItem.ItemIsMovable )

        self.rect = QRectF( -30, -30, 120, 60 )
        self.setPos( position )
        scene.clearSelection()

    def sendFromNodeToBox( self, text ):
        # how do i send text from here to textBox?
        pass

    def boundingRect( self ):
        return self.rect

    def paint( self, painter, option, widget ):
        painter.setRenderHint( QPainter.Antialiasing )
        pen = QPen( Qt.SolidLine )
        pen.setColor( Qt.black )
        pen.setWidth( 3 )

        if option.state & QStyle.State_Selected:
            #####################
            self.sendFromNodeToBox( 'node selected' )
            #####################
            self.setZValue( 1 )
            pen.setWidth( 4 )
            pen.setColor( Qt.green )
        else:
            pen.setWidth( 3 )
            self.setZValue( 0 )
        painter.setPen( pen )
        painter.setBrush( QColor( 200, 0, 0 ) )
        painter.drawRoundedRect( self.rect, 10.0, 10.0 )

mainWindow.ui中的statusBox,它由加载主窗口.py在

^{pr2}$

应用程序运行在win和osx上。Linux尚未测试。在

需要Python2.7和Qt4.8。在

有什么建议吗?在

完整来源如下:

https://www.dropbox.com/sh/lcetrurnemr2cla/AAD-Z6ijgTrG0qVU_cum5viua?dl=0

帮助是非常感激的。在


Tags: frompyrectimportselfnodeinitdef
1条回答
网友
1楼 · 发布于 2024-09-29 21:26:25

一种方法是在SceneView类上定义一个自定义信号,然后图形项可以通过其场景发出文本:

class node( QGraphicsItem ):
    ...  
    def sendFromNodeToBox( self, text ):
        self.scene().textMessage.emit(text)

class SceneView( QGraphicsScene ):
    textMessage = pyqtSignal(str)

class mainWindow( QMainWindow ):
    def __init__( self, parent = None ):
        ...
        self.scene = SceneView()
        self.scene.textMessage.connect(self.sendTextToBox)

相关问题 更多 >

    热门问题