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