PyQt multiple tablewidgets and tabwidgets

后端 未结 1 1340
刺人心
刺人心 2021-01-22 09:23

My objective is to display 10 or more QTabWidget in a single QMainWindow, each tab holding a unique QLabel and QTableWidget.

1条回答
  •  轻奢々
    轻奢々 (楼主)
    2021-01-22 10:00

    Something like this should do it:

    tablist = []
    tablabellist = []
    layoutlist=[]
    self.tablelist = []
    Tab = QtGui.QTabWidget()
    headerlist = [ 'ID','Question','Answer 1','Answer 2','Answer 3','Difficulty','Statistics','Date Added','Added By','Date Modified']
    
    num_tab_widgets = 10
    
    for i in range(num_tab_widgets):
        tablist.append(QtGui.QWidget())
        Tab.addTab(tablist[i], QtCore.QString('SECTION %s'%chr(ord('A')+i)))
        tablabellist.append(QtGui.QLabel('title'))
        self.tablelist.append(QtGui.QTableWidget())
        setattr(self,'Table%d'%i,self.tablelist[i])
        layoutlist.append(QtGui.QVBoxLayout())
    
        self.tablelist[i].setColumnCount(len(headerlist))
        self.tablelist[i].setHorizontalHeaderLabels(headerlist)
        self.tablelist[i].setEditTriggers(QtGui.QTableWidget.NoEditTriggers)
        self.tablelist[i].setSelectionBehavior(QtGui.QTableWidget.SelectRows)
        self.tablelist[i].setSelectionMode(QtGui.QTableWidget.SingleSelection)
    
        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)
    

    Note that it may not be necessary to save everything you have in lists, or as part of the instance (self), but I'm not questioning it because I don't know what the rest of your application does! Hopefully this gives you enough information to streamline it yourself.

    0 讨论(0)
提交回复
热议问题