0 / 0 / 0
Регистрация: 06.05.2024
Сообщений: 2

Создание таблицы бд в диалоговом окне

08.05.2024, 23:00. Показов 801. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Надо через PySide6 сделать так, чтобы создавалась таблица как на этом скриншоте:

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

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
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)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.05.2024, 23:00
Ответы с готовыми решениями:

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

Создание ListBox в диалоговом окне
Здравствуйте! Создал ресурс диалогового окна. Диалоговое окно содержит кнопки и listbox. При вызове диалогового окна listbox в нем...

Создание табуляции, MFC в диалоговом окне
Помогите разобратся плиз! вот собственно код,нужно создать чтобы считало по формуле вот формулы e в степени x+tg*(x) #include...

1
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,762
10.05.2024, 14:38
Цитата Сообщение от aaasssssss Посмотреть сообщение
создавалась таблица как на этом скриншоте:
есть QTableView/QSqlTableModel для этого
http://it.kgsu.ru/Python_Qt/pyqt5_171.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.05.2024, 14:38
Помогаю со студенческими работами здесь

Создание и вывод массива кнопок в диалоговом окне
Не могу разобратся как создать и показать массив кнопок в диалоговом окне (игровое окно для игры Сапер) значения CellsX,CellsY беруться с...

Вылетает приложение при попытке удалить элемент из SQL таблицы в диалоговом окне
Лог: E/AndroidRuntime: FATAL EXCEPTION: main Process: user.adprediction, PID: 2804 ...

Ввести текст в диалоговом окне, вывести количество символов в другом окне
Ввести текст в диалоговом окне, вывести количество символов в другом окне. B Word

Текст в диалоговом окне
Доброе время суток. Возникла проблема с диалоговым окном, из-за картинки смещаются фразы, но не могу понять как правильно тогда настроить...

Программа в диалоговом окне
Ребят, привет, такая задача стоит перед мной. Нужно сделать UserForm, которая способна решать задачу "Узнать пол и по введенному...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru