M
M
Mikhail Kuligin2017-01-10 11:54:34
Python
Mikhail Kuligin, 2017-01-10 11:54:34

How to load the contents of a tab from another class into a tabbed panel in Python & PyQt5?

There is a class MainWindow in which there is a panel with tabs. One of the tabs is formed by the FactorsTab class, located in the FactorsTabWidget.py file.

line 13, in __init__
self.table = QtGui.QStandardItemModel(parent=self.frame_factors)
AttributeError: 'NoneType' object has no attribute 'QStandardItemModel'

line 13 I have: self.table = QtGui.QStandardItemModel(parent=self.frame_factors)
file main.py
class MainWindow(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        QtWidgets.QMainWindow.__init__(self, parent)
        factors_tab = FactorsTabWidget.FactorsTab()
        self.tabs = QtWidgets.QTabWidget()
        self.tabs.addTab(factors_tab, "Factors")        

file FactorsTabWidget.py
class FactorsTab(QtWidgets.QWidget):
    def __init__(self):
        QtWidgets.QWidget.__init__(self, parent=None)
        self.frame_factors = QtWidgets.QTableView()
        self.table = QtGui.QStandardItemModel(parent=self.frame_factors)
        self.lst1 = ['Дискета', 'Бумага для принтера', 'Барабан для принтера']
        self.lst2 = ["10", "3", "10452048"]
        for row in range(0, 3):
            item1 = QtGui.QStandardItem(self.lst1[row])
            item2 = QtGui.QStandardItem(self.lst2[row])
            self.table.appendRow([item1, item2])
        self.table.setHorizontalHeaderLabels(['Factor Name', 'Кол-во'])
        self.frame_factors.setModel(self.table)

Answer the question

In order to leave comments, you need to log in

1 answer(s)
M
Mikhail Kuligin, 2017-01-12
@budda

I managed to connect like this:

file main.py
class MainWindow(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        QtWidgets.QMainWindow.__init__(self, parent)
        self.factors_tab = FactorsTab()
        self.table_tab = TableTab()
        # Location of objects Main Window
        self.box = QtWidgets.QVBoxLayout()
        self.tabs = QtWidgets.QTabWidget()
        self.tabs.addTab(self.factors_tab, "Factors")
        self.tabs.addTab(self.table_tab, "Table of coding factors")
        # self.tabs.addTab(self.tab3, "Work Table")
        # self.tabs.addTab(self.tab4, "Calculations")
        self.setCentralWidget(self.tabs)
        self.tabs.setElideMode(QtCore.Qt.ElideLeft)
        self.tabs.setCurrentIndex(0)
        self.tabs.setUsesScrollButtons(True)
        self.tabs.setLayout(self.box)
        self.add_menu()


file FactorsTabWidget.py
class FactorsTab(QtWidgets.QTableView):
    def __init__(self):
        QtWidgets.QTableView.__init__(self, parent=None)
        self.label = QtWidgets.QLabel("Select folder, project file name")
        self.vbox = QtWidgets.QVBoxLayout()
        self.vbox.addWidget(self.label)
        self.frame_factors = QtWidgets.QTableView()

        self.table = QtGui.QStandardItemModel(0, 2)
        self.lst1 = ['Дискета', 'Бумага для принтера', 'Барабан для принтера']
        self.lst2 = ["10", "3", "10452048"]
        for row in range(0, 3):
            item1 = QtGui.QStandardItem(self.lst1[row])
            item2 = QtGui.QStandardItem(self.lst2[row])
            self.table.appendRow([item1, item2])
        self.table.setHorizontalHeaderLabels(['Factor Name', 'Кол-во'])
        self.frame_factors.setModel(self.table)

        self.vbox.addWidget(self.frame_factors)
        self.setLayout(self.vbox)

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question