QTableview. Alle Daten der selektierten Zeile in Liste speichern

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
Benutzeravatar
nieselfriem
User
Beiträge: 135
Registriert: Sonntag 13. Januar 2013, 16:00

Hallo,

ich möchte die Daten der ausgewählten Zeile in eine Liste speichern um diese dann für andere Elemente anzuwenden. Nur leider bleibt die Liste leer.

Dazu habe ich die Funktion getRowclicked erzeugt die auf den Aufruf self.dataTBL.clicked.connect(self.getRowclicked) reagiert

Code: Alles auswählen

from PyQt5 import QtCore, QtGui, QtWidgets
#from models import *
from Models.table_models import *
from db_mapping import load_data
from QtComponents.TableCheckBox import *
from QtComponents.TableValidateInput import *

my_array = load_data()

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(650, 647)
        MainWindow.setMinimumSize(QtCore.QSize(650, 0))
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.groupBox = QtWidgets.QGroupBox(self.centralwidget)
        self.groupBox.setGeometry(QtCore.QRect(20, 30, 271, 215))
        self.groupBox.setObjectName("groupBox")
...
        self.dataTBL = QtWidgets.QTableView(self.centralwidget)
        self.dataTBL.setGeometry(QtCore.QRect(40, 261, 581, 251))
        self.dataTBL.setObjectName("dataTBL")

        model = TableModel(my_array)
        model.setHeaderData(0, QtCore.Qt.Horizontal, "Test")
        self.dataTBL.setModel(model)
        self.dataTBL.setItemDelegateForColumn(2, CheckBoxDelegate(self.dataTBL))
        self.dataTBL.setItemDelegate(ValidatedCurrencyItemDelegate())
        self.dataTBL.setItemDelegate(ValidatedDateItemDelegate())
        self.theSelectionModel = self.dataTBL.selectionModel()
        self.dataTBL.clicked(self.getRowclicked)#Registrieren
...

        def getRowclicked(self):
            data_list=None
            index = self.dataTBL.selectedIndexes()[0]
            test_list = self.dataTBL.selectionModel().selectedRows()
            print(type(test_list))
            print("test=",test_list)
            print(type(index))
            row = index.row()
            print(index.data())
            model = self.dataTBL.model()
            for col in range(model.columnCount()):
                index = model.index(row, col)
                data_list.append(model.data(index).toString())
            print(data_list)


Dabei kommt es jedoch zum Fehler:

Code: Alles auswählen


line 174, in getRowclicked
    for col in range(model.columnCount()):
TypeError: columnCount() missing 1 required positional argument: 'parent'
Gibt es einen einfacheren weg, alle Daten der Auswahl zu sammeln?

VG niesel
Antworten