2017-07-05 4 views
0

Ich versuche, eine Umwandlung von etwas Code von PyQt4 nach PyQt5, aber ich habe noch nie mit PyQt gearbeitet, deshalb habe ich einige Probleme damit. Ich habe es versäumt, etwas Code mit .connect zu konvertieren, weil, wie ich in PyQt5 verstehe, die Arbeit mit Signalen und Slots geändert wurde. Hier ist der Code.Um PyQt5 'connect' Konvertierung

class Gui(QWidget.QMainWindow, Ui_MainWindow): 

    def __init__(self, cfgpath): 
     QWidget.QMainWindow.__init__(self) 
     Ui_MainWindow.__init__(self) 

     self.configpath = cfgpath 
     self.paint = Viewer(self) 
     self.setupUi(self) 

     self.loadButton.clicked.connect(self.loadImage) 
     self.maskClearButton.clicked.connect(self.paint.clearMask) 
     self.brushSizeSB.valueChanged.connect(self.brushSizeChange) 
     btnlist = [self.horDownBtn, self.horDownLargeBtn, self.horUpBtn, self.horUpLargeBtn, 
        self.vertDownBtn, self.vertDownLargeBtn, self.vertUpBtn, self.vertUpLargeBtn] 
     sigmap = QtCore.QSignalMapper(self) 
     for i in range(len(btnlist)): 
      # Here it falls 
      self.connect(btnlist[i], QtCore.SIGNAL("clicked()"), sigmap, QtCore.SLOT("map()")) 
      btnlist[i].clicked 
      sigmap.setMapping(btnlist[i], i) 
     # And here 
     self.connect(sigmap, QtCore.SIGNAL("mapped(int)"), self.paint.handleScaleBtn) 

So wie kann ich diesen Code ändern es funktioniert?

+0

bitte teilen Ui_MainWindow Klasse – eyllanesc

+0

@ eyllanesc Es ist ziemlich lang und wird von einigen .ui-Datei geladen. Wenn es wirklich benötigt wird, kann ich es mit gist teilen. – MOVZBL

+0

Testen Sie zuerst meine Lösung, und wenn es nicht funktioniert, teilen Sie es über gist, aber machen Sie meine Antwort richtig: – eyllanesc

Antwort

0

Die neue Verbindung Stil ist wie folgt:

sender.signal.connect(slot) 

In Ihrem Fall ändern:

self.connect(btnlist[i], QtCore.SIGNAL("clicked()"), sigmap, QtCore.SLOT("map()")) 

self.connect(sigmap, QtCore.SIGNAL("mapped(int)"), self.paint.handleScaleBtn) 

zu

btnlist[i].clicked.connect(sigmap.map) 

sigmap.mappe.connect(self.paint.handleScaleBtn) 
0

Hier finden Sie alle Informationen haben, für das neue Signal benötigt Schlitzart: pyqt new-style signal/slots Versuchen Sie, und wenn Sie irgendein particula haben r Problem lass es mich wissen.