Надо сделать так, чтобы создавалась таблица как на этом скриншоте:
а по итогу в диалоге получается так:

а по итогу в диалоге получается так:

Код:
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
----------------------- --------
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