Неправильно отображается таблица в диалоге

aaasss

Новичок
Пользователь
Май 6, 2024
1
0
1
Надо сделать так, чтобы создавалась таблица как на этом скриншоте:изображение_2024-05-06_185952468.png

а по итогу в диалоге получается так: изображение_2024-05-06_190030990.png

Код:
class ItemsModel(QtCore.QAbstractTableModel):
    def __init__(self, *args, **kwargs) -> None:
        super().__init__(*args, **kwargs)
        self.modeli = []
        self.transform = {}

    def setModeli(self, modeli):
        self.beginResetModel()
        self.modeli = modeli
        self.endResetModel()

    def setTransform(self, transform):
        self.beginResetModel()
        self.transform = transform
        self.endResetModel()

    def rowCount(self, *args, **kwargs) -> int:
        return len(self.modeli)
    
    def columnCount(self, *args, **kwargs) -> int:
        return 10

    def data(self, index: QtCore.QModelIndex, role: QtCore.Qt.ItemDataRole):
        if not index.isValid():
            return
        
        if role == QtCore.Qt.ItemDataRole.DisplayRole:
            transform_info = self.modeli[index.row()]
            col = index.column()
            if col == 0:
                tran_title = self.transform[transform_info.tr_id].type
                return tran_title
            elif col == 1:
                return f'{transform_info.type}'
            elif col == 2:
                return f'{transform_info.Snom}'
            elif col == 3:
                return f'{transform_info.Uvn}'
            elif col == 4:
                return f'{transform_info.Unn}'
            elif col == 5:
                return f'{transform_info.Uk}'
            elif col == 6:
                return f'{transform_info.deltaPk}'
            elif col == 7:
                return f'{transform_info.Px}'
            elif col == 8:
                return f'{transform_info.Ix}'
            elif col == 9:
                return f'{transform_info.Rt}'
            elif col == 10:
                return f'{transform_info.Xt}'
        
    def headerData(self, section: int, orientation: QtCore.Qt.Orientation, role: QtCore.Qt.ItemDataRole):
        if role == QtCore.Qt.ItemDataRole.DisplayRole:
            if orientation == QtCore.Qt.Orientation.Horizontal:
                return {
                    0: "Тип",
                    1: "Модель",
                    2: "Номинальная мощность",
                    3: "Uвн",
                    4: "Uнн",
                    5: "Uк",
                    6: "дельта Рк",
                    7: "Рх",
                    8: "Ix",
                    9: "Rт",
                    10: "Хт",
                }.get(section)


class Ui_Dialog(object):


    def setupUi(self, Dialog, *args, **kwargs):
        if not Dialog.objectName():
            Dialog.setObjectName(u"Dialog")
        self.ui = Ui_Dialog


        Dialog.resize(443, 544)
        self.verticalLayout = QVBoxLayout(Dialog)
        self.verticalLayout.setObjectName(u"verticalLayout")

        self.CMBTransformatoi = QComboBox(Dialog)
        self.CMBTransformatoi.setObjectName(u"CMBTransformatoi")
        self.CMBTransformatoi.setGeometry(QRect(0, 42, 427, 22))

        self.verticalLayout.addWidget(self.CMBTransformatoi)

        self.TBLitems = QTableView(Dialog)
        self.TBLitems.setObjectName(u"TBLitems")
        self.TBLitems.setGeometry(QRect(0, 70, 427, 444))
        self.verticalLayout.addWidget(self.TBLitems)

        self.centralwidget = QWidget(Dialog)
        self.centralwidget.setObjectName(u"centralwidget")
        self.TBLitems = QTableView(self.centralwidget)
        self.TBLitems.setObjectName(u"TBLitems")
      
        self.model = ItemsModel()
        self.TBLitems.setModel(self.model)
        self.TBLitems.horizontalHeader().setSectionResizeMode(QtWidgets.QHeaderView.ResizeMode.ResizeToContents)


        
        self.engine  = create_engine("sqlite+pysqlite:///BDDD.db", echo=True)       
        self.load_transformatori()
        self.load_vsetransformatori()
        self.CMBTransformatoi.currentIndexChanged.connect(self.load_vsetransformatori)
        self.retranslateUi(Dialog)

    #НА ЧАИНКЕ ТАМ ОТКРЫТО НАДО ПОСМОТРЕТЬ ПРОЕКТ И ЧТО ТАМ ИМПОРТИТ ИЗ УИ ДАЛОГ
        QMetaObject.connectSlotsByName(Dialog)

    def load_vsetransformatori(self):
        trf_data = self.CMBTransformatoi.currentData()
        if trf_data:
            trf_id = self.CMBTransformatoi.currentData().tf_id
        else:
            trf_id = 0
            
        # self.ui.Listinformation.clear()
        self.rows = []
        with Session(self.engine) as s:
            query = """
            SELECT *
            FROM Vse_transformatori
            WHERE tr_id = :tid
            """
            rows = s.execute(text(query), {"tid": trf_id})
            for r in rows:
                # tf_name = self.transformatori[r.tr_id].type
                # self.ui.Listinformation.addItem(f"{tf_name} {r.type} {r.Snom} {r.Uvn} {r.Unn} {r.Uk} {r.deltaPk} {r.Px} {r.Ix} {r.Rt} {r.Xt}")
                self.rows.append(r)
        self.model.setModeli(self.rows)

    def load_transformatori(self):
        self.transformatori = {}
        with Session(self.engine) as s:
            query = """
            SELECT *
            FROM Transformatori_type
            """
            rows = s.execute(text(query))
            for r in rows:
                self.transformatori[r.tf_id] = r
        self.CMBTransformatoi.addItem("Выберите нужный вам трансформатор")
        for r in self.transformatori.values():
            self.CMBTransformatoi.addItem(r.type, r)
        self.model.setTransform(self.transformatori)




Package Version
----------------------- --------
anaconda-anon-usage 0.4.4
archspec 0.2.3
boltons 23.0.0
Brotli 1.0.9
certifi 2024.2.2
cffi 1.16.0
charset-normalizer 2.0.4
colorama 0.4.6
conda 24.3.0
conda-content-trust 0.2.0
conda-libmamba-solver 24.1.0
conda-package-handling 2.2.0
conda_package_streaming 0.9.0
cryptography 42.0.5
distro 1.8.0
greenlet 3.0.3
idna 3.4
jsonpatch 1.33
jsonpointer 2.1
libmambapy 1.5.8
menuinst 2.0.2
packaging 23.2
pip 23.3.1
platformdirs 3.10.0
pluggy 1.0.0
pycosat 0.6.6
pycparser 2.21
PySide6 6.7.0
PySide6_Addons 6.7.0
PySide6_Essentials 6.7.0
PySocks 1.7.1
requests 2.31.0
ruamel.yaml 0.17.21
setuptools 68.2.2
shiboken6 6.7.0
SQLAlchemy 2.0.30
tqdm 4.65.0
truststore 0.8.0
typing_extensions 4.11.0
urllib3 2.1.0
wheel 0.41.2
win-inet-pton 1.1.0
zstandard 0.19.0
 

Форум IT Специалистов