Skip to main content
 首页 » 编程设计

python之PyQT4 中的信号

2025年05月04日19kenshinobiy

我有 GUI,我想在两个类之间建立一些通信

    . 
    . 
    . 
    mainWidget = QtGui.QWidget() 
    mainWidget.setLayout( mainLayout ) 
    self.setCentralWidget( mainWidget ) 
    self.show() 
 
    """        Creating class        """ 
    self.server = MCCommunication.MCCommunication() 
    self.connect( self.server, QtCore.SIGNAL( "textUpdated" ), self.insertText ); 
    sys.exit( self.app.exec_() ) 

MCCommunication 类如下:

类 MCCommunication(QtCore.QObject): ''' 类文档 '''

def __init__( self ): 
    ''' 
    Constructor 
    ''' 
    HOST, PORT = socket.gethostbyname( socket.gethostname() ), 31000 
    self.server = SocketServer.ThreadingTCPServer( ( HOST, PORT ), MCRequestHandler ) 
    ip, port = self.server.server_address 
 
    # Start a thread with the server 
    # Future task: Make the server a QT-Thread... 
    self.server_thread = threading.Thread( target = self.server.serve_forever ) 
    self.server_thread.start() 
    self.emit( QtCore.SIGNAL( "textUpdated" ), ( "TCPServer listening on" ) ) 

但我收到以下错误:

self.emit( QtCore.SIGNAL( "textUpdated" ), ( "TCPServer listening on" ) ) 
RuntimeError: underlying C/C++ object has been deleted 

请您参考如下方法:

您需要在 MCCommunication 类中初始化底层 QObject。将此行添加到 __init__ 方法的开头:

super(MCCommunication,self).__init__()