2017-07-18 1 views
-1

Ich möchte das Signal, das von der closeWidgetUI-Klassenmethode ausgegeben wird, in die addTool-Klassenmethode einbinden. Aber das scheint nur mit PyQt4 nicht mit PySide zu funktionieren. Jedes Mal, wenn ich den in self.close_btn.clicked.connect (self.closeWidgetUI) erstellten closeButton anklicke, friert das Programm ein und schließt sich selbst. Irgendeine Nachsaugung?Verbinden Sie das Signal, das von der Methodenklasse in verschiedene Class-Slot-Signale ausgegeben wird 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) 

Antwort

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) 

ich habe es auf diese Weise! Danke an mein Gehirn :) Prost

Verwandte Themen