Mein Code sieht momentan so aus (Baustelle)
Code: Alles auswählen
import operator  # used for sorting
from PyQt4.QtCore import Qt, QAbstractTableModel, SIGNAL, pyqtSignal
from PyQt4.QtGui import QWidget, QTableView, QApplication, QVBoxLayout, QTreeView, QKeyEvent
class MyTreeView(QTreeView):
    enterPressed = pyqtSignal()
    def __init__(self):
        QTreeView.__init__(self)
    def keyPressEvent(self, event): #QKeyEvent
        if event.key() == Qt.Key_Enter:
            self.enterPressed.emit()
            print('enter key pressed')
class MyWindow(QWidget):
    def __init__(self, dataList, header, *args):
        QWidget.__init__(self, *args)
        self.filter = MyTreeView()
        self.installEventFilter(self.filter)
        MyTreeView.keyPressEvent(QKeyEvent()) #<<<<<<<<<< Fehlermeldung
        # setGeometry(x_pos, y_pos, width, height)
        self.setGeometry(70, 150, 420, 250)
        self.setWindowTitle("Click on the header to sort table")
        self.table_model = MyTableModel(self, dataList, header)
        table_view = QTableView()
        # bind cell click to a method reference
        table_view.clicked.connect(self.showSelection)
        table_view.setModel(self.table_model)
        # enable sorting
        table_view.setSortingEnabled(True)
        layout = QVBoxLayout(self)
        layout.addWidget(table_view)
        self.setLayout(layout)
    def showSelection(self, item):
        # Hole Liste
        mylist = self.table_model.sorted_list()
        # Ausgabe des ausgewählten Datensatzes
        dataset = mylist[item.row()]
        # Editiere Datensatz
        dataset = list(dataset) # Test
        dataset[0] = 'aaa test' # Test
        dataset = tuple(dataset) # Test
        # Update Liste
        mylist[item.row()] = dataset
        self.table_model.edit_list(mylist)
        #
        cellContent = item.data()
        print(cellContent)  # test
        sf = "You clicked on {}".format(cellContent)
        # display in title bar for convenience
        self.setWindowTitle(sf)
class MyTableModel(QAbstractTableModel):
    """
    keep the method names
    they are an integral part of the model
    """
    def __init__(self, parent, mylist, header, *args):
        QAbstractTableModel.__init__(self, parent, *args)
        self.mylist = mylist
        self.header = header
    def rowCount(self, parent):
        return len(self.mylist)
    def columnCount(self, parent):
        return len(self.mylist[0])
    def data(self, index, role):
        if not index.isValid():
            return None
        elif role != Qt.DisplayRole:
            return None
        return self.mylist[index.row()][index.column()]
    def headerData(self, col, orientation, role):
        if orientation == Qt.Horizontal and role == Qt.DisplayRole:
            return self.header[col]
        return None
    def sort(self, col, order):
        """sort table by given column number col"""
        self.emit(SIGNAL("layoutAboutToBeChanged()"))
        self.mylist = sorted(self.mylist,
            key=operator.itemgetter(col))
        if order == Qt.DescendingOrder:
            self.mylist.reverse()
        self.emit(SIGNAL("layoutChanged()"))
    def sorted_list(self):
        return self.mylist
    def edit_list(self, mylist):
        self.mylist = mylist
        return
# you could process a CSV file to create this data
header = ['First Name', 'Last Name', 'Age', 'Weight']
# a list of (fname, lname, age, weight) tuples
dataList = [
    ('Ben', 'Dover', 36, 127),
    ('Foster', 'Krampf', 27, 234),
    ('Barry', 'Chaurus', 19, 315),
    ('Sede', 'Anowski', 59, 147),
    ('Carolus', 'Gabel', 94, 102),
    ('Michel', 'Zittus', 21, 175),
    ('Annie', 'Waters', 31, 114)
    ]
app = QApplication([])
win = MyWindow(dataList, header)
win.show()
result = app.exec_()
print(result)
Dabei erhalte ich folgende Fehlermeldung:
Code: Alles auswählen
Traceback (most recent call last):
  File "table_test.py", line 132, in <module>
    win = MyWindow(dataList, header)
  File "table_test.py", line 32, in __init__
    MyTreeView.keyPressEvent(QKeyEvent()) #<<<<<<<<<< Fehlermeldung
TypeError: arguments did not match any overloaded call:
  QKeyEvent(QEvent.Type, int, Qt.KeyboardModifiers, str text='', bool autorep=False, int count=1): not enough arguments
  QKeyEvent(QKeyEvent): not enough arguments
was diese Zeile betrifft:
Code: Alles auswählen
        MyTreeView.keyPressEvent(QKeyEvent()) #<<<<<<<<<< Fehlermeldung
Was mache ich falsch?