Added relations data dialog wich is called from AddData form
This commit is contained in:
parent
2234722708
commit
44baf080db
2
dm.py
2
dm.py
|
@ -325,7 +325,7 @@ def insertDataIntoBD(dataList):
|
|||
qweryData = qweryData + '' + item[1] + ','
|
||||
elif fType == 'datetime':
|
||||
# преобразуем дату всяко разно
|
||||
dt = datetime.strptime(item[1], "%d.%m.%Y %H:%M")
|
||||
dt = datetime.strptime(item[1], "%d.%m.%y %H:%M")
|
||||
item[1] = str(dt)
|
||||
qweryData = qweryData + '\'' + item[1] + '\','
|
||||
elif fType == 'date':
|
||||
|
|
118
gui.py
118
gui.py
|
@ -17,7 +17,7 @@ class MyTable(QTableWidget):
|
|||
self.horizontalHeader().setStretchLastSection(True)
|
||||
self.horizontalHeader().setCascadingSectionResizes(True)
|
||||
# равномерное изменение ширины столбцов
|
||||
#self.horizontalHeader().setSectionResizeMode(1)
|
||||
self.horizontalHeader().setSectionResizeMode(1)
|
||||
# изменение ширины столбцов по размеру текста
|
||||
#self.horizontalHeader().setSectionResizeMode(3)
|
||||
self.horizontalHeader().setStyleSheet("color: black; font-weight:bold; background-color: lightblue;")
|
||||
|
@ -54,7 +54,102 @@ class MyTable(QTableWidget):
|
|||
for currentQTableWidgetItem in self.selectedItems():
|
||||
print(currentQTableWidgetItem.row(), currentQTableWidgetItem.column(), currentQTableWidgetItem.text())
|
||||
|
||||
# Форма для добавления и редактирования
|
||||
# Диалог выбора связанных данных
|
||||
class RelationDataView(QMainWindow):
|
||||
lblList = []
|
||||
editList = []
|
||||
|
||||
def __init__(self, tblName, editWidget, field, lbl, rel):
|
||||
super().__init__()
|
||||
self.tblName = tblName
|
||||
self.editWidget = editWidget
|
||||
self.lbl = lbl
|
||||
self.tblDescr = dm.getTablesDescriptionOfName(tblName)
|
||||
self.field = field
|
||||
self.rel = rel
|
||||
self.setWindowTitle(self.tblDescr)
|
||||
self.setGeometry(300, 300, 640, 480)
|
||||
scroll_widget = QWidget()
|
||||
self.general_layout = QVBoxLayout()
|
||||
#scroll_area = QScrollArea()
|
||||
|
||||
l = QVBoxLayout()
|
||||
headBox = QHBoxLayout()
|
||||
lblHeader = QLabel("<B>Таблица: " + self.tblDescr)
|
||||
l.addLayout(headBox)
|
||||
headBox.addWidget(lblHeader)
|
||||
hboxData = QHBoxLayout()
|
||||
self.tableViewData = MyTable()
|
||||
#print(self.widgetsList)
|
||||
hboxData.addWidget(self.tableViewData)
|
||||
hboxBtn = QHBoxLayout()
|
||||
btnOk = QPushButton('Ок')
|
||||
btnOk.clicked.connect(lambda: self.ok())
|
||||
btnCancel = QPushButton('Закрыть')
|
||||
btnCancel.clicked.connect(lambda: self.close())
|
||||
|
||||
l.addLayout(hboxData)
|
||||
|
||||
hboxBtn.addWidget(btnOk)
|
||||
hboxBtn.addWidget(btnCancel)
|
||||
l.addLayout(hboxBtn)
|
||||
|
||||
self.general_layout.addLayout(l)
|
||||
|
||||
scroll_widget.setLayout(self.general_layout)
|
||||
#scroll_area.setWidget(scroll_widget)
|
||||
self.setCentralWidget(scroll_widget)
|
||||
|
||||
addDataIntoTable(self.tblName, self.tableViewData)
|
||||
|
||||
def ok(self):
|
||||
#listData = [self.tblName]
|
||||
#listFieldData = []
|
||||
# выбираем из выделенной строки значение нужной ячейки
|
||||
# соответсвующей полю связанной таблицы
|
||||
|
||||
for currentQTableWidgetItem in self.tableViewData.selectedItems():
|
||||
lstFields = dm.getTableStructure(self.tblName)
|
||||
i = 0
|
||||
for fieldItem in lstFields:
|
||||
if fieldItem[0] == self.field:
|
||||
#print(fieldItem, i)
|
||||
self.editWidget.setText(self.tableViewData.item(currentQTableWidgetItem.row(), i).text())
|
||||
# пррячем воле ввода
|
||||
self.editWidget.hide()
|
||||
print(self.lbl.text())
|
||||
# в метку добавляем значения для подставновки соответсвенно связи
|
||||
txt = '<b>'+str(self.getDataFromTableWidget(currentQTableWidgetItem.row()))
|
||||
# устанавливаем текст на метку и включаем её
|
||||
self.lbl.setText(txt)
|
||||
self.lbl.setVisible(True)
|
||||
break
|
||||
i = i+1
|
||||
self.close()
|
||||
# получаем данные из таблицы для соответсвующих полей
|
||||
# для подставновки в форму редактирования(добавления) для связей
|
||||
def getDataFromTableWidget(self, row):
|
||||
fields = self.rel.split(',')
|
||||
lstFields = dm.getTableStructure(self.tblName)
|
||||
print(fields)
|
||||
print(lstFields)
|
||||
txt = ''
|
||||
|
||||
for item in fields:
|
||||
item = item.rstrip(' ').lstrip(' ')
|
||||
print(item)
|
||||
i = 0
|
||||
for fieldItem in lstFields:
|
||||
if fieldItem[0] == item:
|
||||
print(item, fieldItem)
|
||||
print(self.tableViewData.item(row, i).text())
|
||||
txt = txt + ' ' +self.tableViewData.item(row, i).text()
|
||||
|
||||
i = i + 1
|
||||
print(txt)
|
||||
return txt
|
||||
|
||||
# Форма добавления записи в БД
|
||||
class EditForm(QMainWindow):
|
||||
lblList = []
|
||||
editList = []
|
||||
|
@ -63,6 +158,7 @@ class EditForm(QMainWindow):
|
|||
super().__init__()
|
||||
self.tblName = tblName
|
||||
self.setWindowTitle("Добавление записи")
|
||||
#self.setGeometry(300, 300, 400, 400)
|
||||
scroll_widget = QWidget()
|
||||
self.general_layout = QVBoxLayout()
|
||||
scroll_area = QScrollArea()
|
||||
|
@ -94,6 +190,8 @@ class EditForm(QMainWindow):
|
|||
fDescr = dm.getFieldDescription(tblName, fName)
|
||||
hboxEdit = QHBoxLayout()
|
||||
lbl = QLabel(fDescr)
|
||||
lbl2 = QLabel(fDescr)
|
||||
lbl2.hide()
|
||||
|
||||
#listRelationTableAndField = []
|
||||
btnRelations = ''
|
||||
|
@ -130,6 +228,7 @@ class EditForm(QMainWindow):
|
|||
self.widgetsList.append([fName, edit])
|
||||
|
||||
hboxEdit.addWidget(lbl)
|
||||
hboxEdit.addWidget(lbl2)
|
||||
hboxEdit.addWidget(edit)
|
||||
# добавляем к полю кнопку для вызова связанных
|
||||
print(fName)
|
||||
|
@ -145,7 +244,7 @@ class EditForm(QMainWindow):
|
|||
btnRelations.setFixedWidth(30)
|
||||
# добавляем название виджета в список соответсвия кнопок и таблиц БД
|
||||
# пиздец извращения =(
|
||||
self.btnRelationsList.append([btnRelations, tableRelation, fieldRelation, replaceField])
|
||||
self.btnRelationsList.append([btnRelations, tableRelation, fieldRelation, replaceField, edit, lbl2, replaceField])
|
||||
btnRelations.clicked.connect(lambda: self.openRelationTable())
|
||||
hboxEdit.addWidget(btnRelations)
|
||||
l.addLayout(hboxEdit)
|
||||
|
@ -179,9 +278,16 @@ class EditForm(QMainWindow):
|
|||
if sender == item[0]:
|
||||
btn = item[0]
|
||||
tbl = item[1]
|
||||
fld = item[2]
|
||||
lbl = item[5]
|
||||
rel = item[6]
|
||||
editWidget = item[4]
|
||||
# выбираем данные из БД
|
||||
data = dm.selectData(tbl)
|
||||
print(data)
|
||||
#data = dm.selectData(tbl)
|
||||
#print(data)
|
||||
relForm = RelationDataView(tbl, editWidget, fld, lbl, rel)
|
||||
relForm.show()
|
||||
#relForm.setParent(self)
|
||||
|
||||
|
||||
def clickTablesList(tbl_name, tblDataWidget, data='NULL'):
|
||||
|
@ -302,6 +408,7 @@ def showMenuToolbar(window):
|
|||
toolbar.addAction(printAction)
|
||||
# toolbar.addAction(exitAction)
|
||||
|
||||
# форма для добавления новой записи
|
||||
def addNewRecord():
|
||||
global listTables, tblRelationsData
|
||||
tblDescr = listTables.model().data(listTables.currentIndex())
|
||||
|
@ -317,6 +424,7 @@ def addNewRecord():
|
|||
#editForm.setParent(tblRelationsData)
|
||||
#editForm = Example()
|
||||
|
||||
# отображение списка связанных данных
|
||||
def showRelationsRecords(fieldIndex, fieldValue):
|
||||
global tabRelationsData, listTables
|
||||
tblDescr = listTables.model().data(listTables.currentIndex())
|
||||
|
|
Loading…
Reference in New Issue
Block a user