PyQt mehrere Tablewidgets und Tabwidgets

Mein Ziel ist es, 10 oder mehr anzuzeigenQTabWidget In einem einzigenQMainWindow, jeder Tab enthält ein UnikatQLabel undQTableWidget. Etwas wie das:

Obwohl ich es mit dem folgenden Code geschafft habe, das beabsichtigte Ergebnis zu erzielen, frage ich mich, ob es einen effizienteren oder kürzeren Weg gibt, um das gleiche Ergebnis zu erzielen.

    Tab = QtGui.QTabWidget()
    Tab1 = QtGui.QWidget()
    Tab2 = QtGui.QWidget()
    Tab3 = QtGui.QWidget()
    Tab4 = QtGui.QWidget()
    Tab5 = QtGui.QWidget()
    Tab6 = QtGui.QWidget()
    Tab7 = QtGui.QWidget()
    Tab8 = QtGui.QWidget()
    Tab9 = QtGui.QWidget()
    Tab10 = QtGui.QWidget()

    Tab.addTab(Tab1, QtCore.QString('SECTION A'))
    Tab.addTab(Tab2, QtCore.QString('SECTION B'))
    Tab.addTab(Tab3, QtCore.QString('SECTION C'))
    Tab.addTab(Tab4, QtCore.QString('SECTION D'))
    Tab.addTab(Tab5, QtCore.QString('SECTION E'))
    Tab.addTab(Tab6, QtCore.QString('SECTION F'))
    Tab.addTab(Tab7, QtCore.QString('SECTION G'))
    Tab.addTab(Tab8, QtCore.QString('SECTION H'))
    Tab.addTab(Tab9, QtCore.QString('SECTION I'))
    Tab.addTab(Tab10, QtCore.QString('SECTION J'))     

    title1 = QtGui.QLabel('title')
    title2 = QtGui.QLabel('title')
    title3 = QtGui.QLabel('title')
    title4 = QtGui.QLabel('title')
    title5 = QtGui.QLabel('title')
    title6 = QtGui.QLabel('title')
    title7 = QtGui.QLabel('title')
    title8 = QtGui.QLabel('title')
    title9 = QtGui.QLabel('title')
    title10 = QtGui.QLabel('title')

    self.Table1 = QtGui.QTableWidget()
    self.Table2 = QtGui.QTableWidget()
    self.Table3 = QtGui.QTableWidget()
    self.Table4 = QtGui.QTableWidget()
    self.Table5 = QtGui.QTableWidget()
    self.Table6 = QtGui.QTableWidget()
    self.Table7 = QtGui.QTableWidget()
    self.Table8 = QtGui.QTableWidget()
    self.Table9 = QtGui.QTableWidget()
    self.Table10 = QtGui.QTableWidget()

    Layout1 = QtGui.QVBoxLayout()
    Layout2 = QtGui.QVBoxLayout()
    Layout3 = QtGui.QVBoxLayout()
    Layout4 = QtGui.QVBoxLayout()
    Layout5 = QtGui.QVBoxLayout()
    Layout6 = QtGui.QVBoxLayout()
    Layout7 = QtGui.QVBoxLayout()
    Layout8 = QtGui.QVBoxLayout()
    Layout9 = QtGui.QVBoxLayout()
    Layout10 = QtGui.QVBoxLayout()

    tablist = [Tab1,Tab2,Tab3,Tab4,Tab5,Tab6,Tab7,Tab8,Tab9,Tab10]
    tablabellist = [title1,title2,title3,title4,title5,title6,title7,title8,title9,title10]      
    self.tablelist = [self.Table1,self.Table2,self.Table3,self.Table4,self.Table5,self.Table6,self.Table7,self.Table8,self.Table9,self.Table10]
    layoutlist = [Layout1,Layout2,Layout3,Layout4,Layout5,Layout6,Layout7,Layout8,Layout9,Layout10]      
    headerlist = [ 'ID','Question','Answer 1','Answer 2','Answer 3','Difficulty','Statistics','Date Added','Added By','Date Modified']

    for item in self.tablelist:
        item.setColumnCount(len(headerlist))
        item.setHorizontalHeaderLabels(headerlist)
        item.setEditTriggers(QtGui.QTableWidget.NoEditTriggers)
        item.setSelectionBehavior(QtGui.QTableWidget.SelectRows)
        item.setSelectionMode(QtGui.QTableWidget.SingleSelection)

    for i in range (len(layoutlist)):
        layoutlist[i].addWidget(tablabellist[i])
        layoutlist[i].addWidget(self.tablelist[i])
        tablist[i].setLayout(layoutlist[i])

    CLayout = QtGui.QVBoxLayout()
    CLayout.addWidget(Tab)

    Cwidget = QtGui.QWidget()
    Cwidget.setLayout(CLayout)    
    self.setCentralWidget(Cwidget)

Wenn ich 20 addieren würdeTabWidget genauso wie oben, es wird sehr chaotisch und langweilig sein.

Kann ich meinen Code bei gleicher Ausgabe kürzen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage