2017-07-18 40 views
-1

我想将closeWidgetUI类方法发出的信号连接到addTool类方法。但是这似乎只适用于PyQt4而不适用于PySide。每当我点击在self.close_btn.clicked.connect(self.closeWidgetUI)中创建的closeButton,程序就会自动冻结并关闭。任何消化?将方法类中的信号连接到不同的类槽定制信号PySide

import PySide.QtCore as qc 
import PySide.QtGui as qg 

class InterpolateIt(dc,qg.QDialog): 
    def __init__(self): 
     qg.QDialog.__init__(self) 

     """ MORE THINGS 
     OVER THIS PART NOT IMPORTANT AT MOMENT""" 

     add_button.clicked.connect(self.addTool) 

    def addTool(self): 

     #NEED TO CONNECT closeWidgetUI EMITED SIGNAL HERE 
     new_widget = InterpolateWidget() 
     self.clicked.connect(new_widget, qc.SIGNAL('CLOSE'), self.removeTool) 

    def removeTool(self,interpWidget): 
     self.interpolateLayout.removeWidget(interpWidget) 
     interpWidget.deleteLater() 


# ------------------------------------------------------------------------------------------------------#   
class InterpolateWidget(qg.QFrame): 
    def __init__(self): 
     qg.QFrame.__init__(self) 

     """ MORE THINGS 
     OVER THIS PART NOT IMPORTANT AT MOMENT""" 

     # HERE BUTTON EMIT SIGNAL AT CLICKED 
     self.close_btn.clicked.connect(self.closeWidgetUI) 

     # TRIGGER THIS FUNC 
    def closeWidgetUI(self): 
     self.emit(qc.SIGNAL('CLOSE'), self) 

回答

0
from functools import partial 

def addTool(self): 

     #NEED TO CONNECT closeWidgetUI EMITED SIGNAL HERE 
     new_widget = InterpolateWidget() 
     deleteTool = partial(self.removeTool,new_widget) 
     new_widget.close_btn.clicked.connect(deleteTool) 

我做到了以这种方式!感谢我的大脑:)欢呼声