2017-05-10 1 views
0

Ich weiß, dass dies ein typisches pyqt4 zu pyqt5 Portierungsproblem ist, aber bisher vorhandene Fragen haben mir nicht geholfen, eine Lösung zu sehen mein aktuelles Problem: Könnte ich einen Schub bekommen?pyqt5 Portierungsfehler beim Verbinden von Aktionen mit Methoden: AttributeError: type Objekt 'QObject' hat kein Attribut 'connect'

Hier erzeugt die Klasse die folgenden Fehler

AttributeError: type object 'QObject' has no attribute 'connect' 

die Klasse

import logging 
import sys 
import time 

from PyQt5 import QtCore, QtGui, QtWidgets 

from gui.gui import Ui_MainWindow 

from lib import bcinetwork 
from lib import bcixml 

triggered = QtCore.pyqtSignal() 
NORMAL_COLOR = QtCore.Qt.black 
MODIFIED_COLOR = QtCore.Qt.gray 

#class BciGui(QtGui.QMainWindow, Ui_MainWindow): 
class BciGui(QtWidgets.QMainWindow, Ui_MainWindow): 

    def __init__(self, protocol='bcixml'): 
     #QtGui.QMainWindow.__init__(self) 
     QtWidgets.QMainWindow.__init__(self) 

     self.setupUi(self) 
     self.protocol = protocol 

     self.model = TableModel(self) 
     self.proxymodel = QtCore.QSortFilterProxyModel(self) 
     self.proxymodel.setSourceModel(self.model) 
     self.proxymodel.setFilterKeyColumn(- 1) 
     self.proxymodel.setDynamicSortFilter(True) 
     self.tableView.setModel(self.proxymodel) 
     self.tableView.verticalHeader().setVisible(False) 
     self.tableView.horizontalHeader().setSectionResizeMode(1, QtWidgets.QHeaderView.Stretch) 
     self.tableView.sortByColumn(0, QtCore.Qt.AscendingOrder) 
     self.tableView.setSortingEnabled(True) 




    self.toolButton_clearFilter.setDefaultAction(self.actionClearFilter) 

    self.comboBox_feedback = QtWidgets.QComboBox(self.toolBar) 

    self.comboBox_feedback.setSizePolicy(QtWidgets.QSizePolicy.Expanding, 
             QtWidgets.QSizePolicy.Preferred) 
    self.toolBar.insertWidget(self.actionSendInit, self.comboBox_feedback) 



     # connect actions to methods 
     #QtCore.QObject.connect(self.actionOpen, QtCore.SIGNAL("triggered()"), self.clicked) 

     QtCore.QObject.connect(self.actionChangeFeedbackController, QtCore.SIGNAL("triggered()"), self.changeFeedbackController) 

     QtCore.QObject.connect(self.actionClearFilter, QtCore.SIGNAL("triggered()"), self.clearFilter) 
     QtCore.QObject.connect(self.actionOpen, QtCore.SIGNAL("triggered()"), self.open) 
     QtCore.QObject.connect(self.actionPause, QtCore.SIGNAL("triggered()"), self.pause) 
     QtCore.QObject.connect(self.actionPlay, QtCore.SIGNAL("triggered()"), self.play) 
     QtCore.QObject.connect(self.actionQuit, QtCore.SIGNAL("triggered()"), self.quit) 
     QtCore.QObject.connect(self.actionStop, QtCore.SIGNAL("triggered()"), self.stop) 
     QtCore.QObject.connect(self.actionSave, QtCore.SIGNAL("triggered()"), self.save) 
     QtCore.QObject.connect(self.actionSaveAs, QtCore.SIGNAL("triggered()"), self.saveas) 
     QtCore.QObject.connect(self.actionSendModified, QtCore.SIGNAL("triggered()"), self.sendModified) 
     QtCore.QObject.connect(self.actionSendAll, QtCore.SIGNAL("triggered()"), self.sendAll) 
     QtCore.QObject.connect(self.actionSendInit, QtCore.SIGNAL("triggered()"), self.sendinit) 
     QtCore.QObject.connect(self.actionGet, QtCore.SIGNAL("triggered()"), self.get) 

     QtCore.QObject.connect(self.lineEdit, QtCore.SIGNAL("textChanged(const QString&)"), self.filter) 
     QtCore.QObject.connect(self.model, QtCore.SIGNAL("dataChanged(const QModelIndex&, const QModelIndex&)"), self.dataChanged) 

     self.feedbacks = [] 

     self.setFeedbackController(bcinetwork.LOCALHOST, bcinetwork.FC_PORT) 

Es kommt auf, wenn im allgemeinen Aktionen Methoden hier verbindet

 QtCore.QObject.connect(self.actionChangeFeedbackController, QtCore.SIGNAL("triggered()"), self.changeFeedbackController) 

das mir das erwähnt wird Fehler

AttributeError: type object 'QObject' has no attribute 'connect' 

Ich verstehe, dass dieser Teil des Codes ein typisches Pyqt4-Problem ist, das in Pyqt5 nicht mehr funktioniert. Ich sah also viele Erklärungen für neue Signale für bestimmte Widgets, aber ich sehe keine Lösung für eine Aktion im Allgemeinen. Kann mir jemand eine Erklärung geben?

thks

Antwort

0

ok Ich glaube, ich es, indem Sie folgende bekam Arbeit:

#QtCore.QObject.connect(self.actionChangeFeedbackController, QtCore.SIGNAL("triggered()"), self.changeFeedbackController) 
self.actionChangeFeedbackController.triggered.connect(self.changeFeedbackController) 
Verwandte Themen