Change GUI view and usability
This commit is contained in:
parent
76712014cd
commit
e8eca97b6b
BIN
database.db
BIN
database.db
Binary file not shown.
3
dm.py
3
dm.py
|
@ -9,7 +9,6 @@ host='kis',
|
||||||
charset='utf8')
|
charset='utf8')
|
||||||
c = conn.cursor()
|
c = conn.cursor()
|
||||||
|
|
||||||
|
|
||||||
def createTables(tbl_list):
|
def createTables(tbl_list):
|
||||||
global tbl_descr_list, tbl_struct_list
|
global tbl_descr_list, tbl_struct_list
|
||||||
i = 0
|
i = 0
|
||||||
|
@ -59,6 +58,7 @@ def createTables(tbl_list):
|
||||||
i = i + 1
|
i = i + 1
|
||||||
tbl_descr_list.append(one_Table_descr)
|
tbl_descr_list.append(one_Table_descr)
|
||||||
tbl_struct_list.append(one_Table_struct)
|
tbl_struct_list.append(one_Table_struct)
|
||||||
|
print(qwery_create)
|
||||||
c.execute(qwery_create)
|
c.execute(qwery_create)
|
||||||
return tbl_names_list
|
return tbl_names_list
|
||||||
|
|
||||||
|
@ -98,6 +98,7 @@ def selectData(tbl):
|
||||||
subqwery = "(SELECT CONCAT(" + field_replace + ") FROM " + subqwery +" WHERE "+ table1 + "." + field1 +"="+ tbl +"."+ field +") AS " + field
|
subqwery = "(SELECT CONCAT(" + field_replace + ") FROM " + subqwery +" WHERE "+ table1 + "." + field1 +"="+ tbl +"."+ field +") AS " + field
|
||||||
qwery = qwery.replace(field, subqwery)
|
qwery = qwery.replace(field, subqwery)
|
||||||
qwery = qwery.rstrip(',') + " FROM " + tbl + " LIMIT 10000"
|
qwery = qwery.rstrip(',') + " FROM " + tbl + " LIMIT 10000"
|
||||||
|
print(qwery)
|
||||||
c.execute(qwery)
|
c.execute(qwery)
|
||||||
|
|
||||||
return c.fetchall()
|
return c.fetchall()
|
||||||
|
|
57
gui.py
57
gui.py
|
@ -5,9 +5,12 @@ import sys
|
||||||
from PyQt5.QtWidgets import (QWidget, QHBoxLayout, QFrame,
|
from PyQt5.QtWidgets import (QWidget, QHBoxLayout, QFrame,
|
||||||
QSplitter, QStyleFactory, QApplication)
|
QSplitter, QStyleFactory, QApplication)
|
||||||
from PyQt5.QtCore import Qt
|
from PyQt5.QtCore import Qt
|
||||||
from PyQt5.QtWidgets import QMainWindow, QTextEdit, QAction, QApplication, QListView, QListWidget, QTableWidget , QTableView, QTableWidgetItem, QHeaderView
|
#from PyQt5.QtWidgets import QMainWindow, QTextEdit, QAction, QApplication, QListView, QListWidget, QTableWidget , QTableView, QTableWidgetItem, QHeaderView, QPushButton, QMenu
|
||||||
from PyQt5.QtGui import QIcon
|
from PyQt5.QtGui import QIcon
|
||||||
|
from PyQt5.QtWidgets import *
|
||||||
|
#import PyQt5.QtGui
|
||||||
from PyQt5.QtSql import *
|
from PyQt5.QtSql import *
|
||||||
|
|
||||||
#import pymysql
|
#import pymysql
|
||||||
import dm
|
import dm
|
||||||
|
|
||||||
|
@ -27,7 +30,10 @@ class MainWin(QMainWindow):
|
||||||
self.initUI()
|
self.initUI()
|
||||||
#заглушка
|
#заглушка
|
||||||
def qqqq(self):
|
def qqqq(self):
|
||||||
print("ddddddddd")
|
print("Нажата клавиша DEL")
|
||||||
|
#tablesDataWidget.setCellWidget(0, 0, edit)
|
||||||
|
#callEdit = tablesDataWidget.cellWidget(0, 0)
|
||||||
|
#callEdit.text()
|
||||||
|
|
||||||
def initUI(self):
|
def initUI(self):
|
||||||
|
|
||||||
|
@ -126,6 +132,7 @@ class MyTable(QTableWidget):
|
||||||
# изменение ширины столбцов по размеру текста
|
# изменение ширины столбцов по размеру текста
|
||||||
self.horizontalHeader().setSectionResizeMode(3)
|
self.horizontalHeader().setSectionResizeMode(3)
|
||||||
self.horizontalHeader().setStyleSheet("color: blue;")
|
self.horizontalHeader().setStyleSheet("color: blue;")
|
||||||
|
|
||||||
#print(self.tbl)
|
#print(self.tbl)
|
||||||
n = 0
|
n = 0
|
||||||
for item in dm.getTablesStructure(self.tbl):
|
for item in dm.getTablesStructure(self.tbl):
|
||||||
|
@ -133,12 +140,44 @@ class MyTable(QTableWidget):
|
||||||
self.setHorizontalHeaderItem(n, QTableWidgetItem(item))
|
self.setHorizontalHeaderItem(n, QTableWidgetItem(item))
|
||||||
n = n+1
|
n = n+1
|
||||||
|
|
||||||
|
# обработка нажатия мышой на таблице
|
||||||
|
self.doubleClicked.connect(self.on_click)
|
||||||
|
# self.doubleClicked.connect(self.contextMenuEvent(self.cursor()))
|
||||||
|
|
||||||
|
# добавлем кнопку в ячейку
|
||||||
|
#self.clicked.connect(self.addButtonToCell())
|
||||||
|
def addButtonToCell(self):
|
||||||
|
modelIndex = self.currentIndex()
|
||||||
|
col = modelIndex.column()
|
||||||
|
row = modelIndex.row()
|
||||||
|
button = QPushButton('...', self)
|
||||||
|
self.setCellWidget(row, col + 1, button)
|
||||||
|
# показ контекстного меню
|
||||||
|
def contextMenuEvent(self, event):
|
||||||
|
Rmenu = QMenu(self)
|
||||||
|
delRecord = Rmenu.addAction("Удалить запись")
|
||||||
|
relations = Rmenu.addAction("Показать связанные документы")
|
||||||
|
action = Rmenu.exec_(self.mapToGlobal(event.pos()))
|
||||||
|
if action == delRecord:
|
||||||
|
row = self.rowAt(event.pos().y())
|
||||||
|
col = self.columnAt(event.pos().x())
|
||||||
|
print("row:%d, col:%d" % (row, col))
|
||||||
|
item = self.item(self.currentIndex().row(), self.currentIndex().column())
|
||||||
|
print(item.text())
|
||||||
|
|
||||||
|
def on_click(self):
|
||||||
|
print(self.cursor().pos().x())
|
||||||
|
#self.contextMenuEvent(self.cursor())
|
||||||
|
for currentQTableWidgetItem in self.selectedItems():
|
||||||
|
print(currentQTableWidgetItem.row(), currentQTableWidgetItem.column(), currentQTableWidgetItem.text())
|
||||||
|
|
||||||
def setmydata(self):
|
def setmydata(self):
|
||||||
n = 0
|
n = 0
|
||||||
for key in self.data:
|
for key in self.data:
|
||||||
m = 0
|
m = 0
|
||||||
for item in key:
|
for item in key:
|
||||||
newitem = QTableWidgetItem(item)
|
# преобразуем все типы в строку
|
||||||
|
newitem = QTableWidgetItem(str(item))
|
||||||
self.setItem(m, n, newitem)
|
self.setItem(m, n, newitem)
|
||||||
n += 1
|
n += 1
|
||||||
m += 1
|
m += 1
|
||||||
|
@ -197,10 +236,14 @@ class WorkArea(QWidget):
|
||||||
rows = len(data)
|
rows = len(data)
|
||||||
# КОЛИЧЕСТВО КОЛОНОК
|
# КОЛИЧЕСТВО КОЛОНОК
|
||||||
cols = len(data[0])
|
cols = len(data[0])
|
||||||
table = MyTable(tbl_name, data, rows, cols)
|
tablesDataWidget = MyTable(tbl_name, data, rows, cols)
|
||||||
table.setFrameShape(QFrame.StyledPanel)
|
tablesDataWidget.setFrameShape(QFrame.StyledPanel)
|
||||||
splitter1.addWidget(table)
|
splitter1.addWidget(tablesDataWidget)
|
||||||
|
else:
|
||||||
|
# если данных в БД нет выводим пустую табличку
|
||||||
|
tablesDataWidget = QTableView()
|
||||||
|
tablesDataWidget.setFrameShape(QFrame.StyledPanel)
|
||||||
|
splitter1.addWidget(tablesDataWidget)
|
||||||
# обработка нажатия мышой на списке
|
# обработка нажатия мышой на списке
|
||||||
#listTablesWidget.itemClicked.connect(lambda: dm.selectData(listTablesWidget.currentItem))
|
#listTablesWidget.itemClicked.connect(lambda: dm.selectData(listTablesWidget.currentItem))
|
||||||
listTablesWidget.itemClicked.connect(lambda: addData(listTablesWidget.model().data(listTablesWidget.currentIndex())))
|
listTablesWidget.itemClicked.connect(lambda: addData(listTablesWidget.model().data(listTablesWidget.currentIndex())))
|
||||||
|
|
30
tables.json
30
tables.json
|
@ -167,6 +167,36 @@
|
||||||
"relation": ["users.id", "last_name, name, middle_name"]
|
"relation": ["users.id", "last_name, name, middle_name"]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tableName": "test2",
|
||||||
|
"tableDescription": "Шляпа2",
|
||||||
|
"fieldList": [
|
||||||
|
{
|
||||||
|
"fName": "id",
|
||||||
|
"fDescription": "Номер п.п.",
|
||||||
|
"fType": "int(11)",
|
||||||
|
"index": "PRIMARY KEY",
|
||||||
|
"autoIncrement": "yes",
|
||||||
|
"relation": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fName": "ins_date",
|
||||||
|
"fDescription": "Дата добавления",
|
||||||
|
"fType": "DATETIME",
|
||||||
|
"index": "no",
|
||||||
|
"autoIncrement": "no",
|
||||||
|
"relation": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fName": "user",
|
||||||
|
"fDescription": "Юзер шляпы",
|
||||||
|
"fType": "int(11)",
|
||||||
|
"index": "no",
|
||||||
|
"autoIncrement": "no",
|
||||||
|
"relation": ["users.id", "last_name, name, middle_name"]
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user