Some GUI changes
This commit is contained in:
		
							
								
								
									
										68
									
								
								dm.py
									
									
									
									
									
								
							
							
						
						
									
										68
									
								
								dm.py
									
									
									
									
									
								
							| @@ -1,34 +1,48 @@ | ||||
| # -*- coding: utf-8 -*- | ||||
| import sys, json, sqlite3 | ||||
| import json | ||||
|  | ||||
| table_list =  open("tables.json", "r") | ||||
| data = json.load(table_list) | ||||
| def createTables(tbl_list): | ||||
|     i = 0 | ||||
|     tbl_names_list = [] | ||||
|     while i < len(tbl_list): | ||||
|         tbl_descr = tbl_list[i]["tableDescription"] | ||||
|         tbl_name = tbl_list[i]["tableName"] | ||||
|         field_list = tbl_list[i]["fieldList"][i].keys() | ||||
|  | ||||
| tbl_list = data["tables"] | ||||
| print(len(tbl_list)) | ||||
| i = 0 | ||||
| while i < len(tbl_list): | ||||
|     tbl_descr = data["tables"][i]["tableDescription"] | ||||
|     tbl_name = data["tables"][i]["tableName"] | ||||
|     field_list = data["tables"][i]["fieldList"][i].keys() | ||||
|         tbl_names_list.append(tbl_name) | ||||
|  | ||||
|     x = 0 | ||||
|     # список всех полей таблицы | ||||
|     qwery_create = "CREATE TABLE " + tbl_name + " (" | ||||
|     qwery_select = "SELECT * FROM " | ||||
|     index = "" | ||||
|     while x < len(data["tables"][i]["fieldList"]): | ||||
|         if data["tables"][i]["fieldList"][x]["autoIncrement"] == "yes": | ||||
|             auto_increment = " AUTOINCREMENT, " | ||||
|         else: | ||||
|             auto_increment = ", " | ||||
|         qwery_create = qwery_create + data["tables"][i]["fieldList"][x]["fName"] + " " + data["tables"][i]["fieldList"][x]["fType"] + auto_increment | ||||
|         x = 0 | ||||
|         # список всех полей таблицы | ||||
|         qwery_create = "CREATE TABLE " + tbl_name + " (" | ||||
|         qwery_select = "SELECT * FROM " | ||||
|         index = "" | ||||
|         while x < len(tbl_list[i]["fieldList"]): | ||||
|             if tbl_list[i]["fieldList"][x]["autoIncrement"] == "yes": | ||||
|                 auto_increment = " AUTO_INCREMENT, " | ||||
|             else: | ||||
|                 auto_increment = ", " | ||||
|             qwery_create = qwery_create + tbl_list[i]["fieldList"][x]["fName"] + " " + \ | ||||
|                            tbl_list[i]["fieldList"][x]["fType"] + auto_increment | ||||
|  | ||||
|         if data["tables"][i]["fieldList"][x]["index"] == "PRIMARY KEY": | ||||
|             index = "PRIMARY KEY(" + data["tables"][i]["fieldList"][x]["fName"] + ")" | ||||
|         x = x+1 | ||||
|     qwery_create = qwery_create + index + ");" | ||||
|             if tbl_list[i]["fieldList"][x]["index"] == "PRIMARY KEY": | ||||
|                 index = "PRIMARY KEY(" + tbl_list[i]["fieldList"][x]["fName"] + ")" | ||||
|             x = x + 1 | ||||
|         qwery_create = qwery_create + index + ");" | ||||
|  | ||||
|     print(qwery_create) | ||||
|         #print(qwery_create) | ||||
|         i = i + 1 | ||||
|     return tbl_names_list | ||||
|  | ||||
|     i = i+1 | ||||
| def initDBstructure(): | ||||
|     table_list = open("tables.json", "r", encoding="utf-8") | ||||
|     data = json.load(table_list, encoding="utf-8") | ||||
|     tbl_list = data["tables"] | ||||
|     tbl_names_list = createTables(tbl_list) | ||||
|     return tbl_names_list | ||||
|  | ||||
| def selectData(table_name): | ||||
|     # получаем данные из таблицы | ||||
|     data_list = ("1","2","3","4","5") | ||||
|     return table_name | ||||
|  | ||||
| initDBstructure() | ||||
							
								
								
									
										48
									
								
								gui.py
									
									
									
									
									
								
							
							
						
						
									
										48
									
								
								gui.py
									
									
									
									
									
								
							| @@ -5,9 +5,9 @@ import sys | ||||
| from PyQt5.QtWidgets import (QWidget, QHBoxLayout, QFrame, | ||||
|     QSplitter, QStyleFactory, QApplication) | ||||
| from PyQt5.QtCore import Qt | ||||
| from PyQt5.QtWidgets import QMainWindow, QTextEdit, QAction, QApplication, QListView, QListWidget | ||||
| from PyQt5.QtWidgets import QMainWindow, QTextEdit, QAction, QApplication, QListView, QListWidget, QTableWidget , QTableView | ||||
| from PyQt5.QtGui import QIcon | ||||
|  | ||||
| from PyQt5 import QtSql | ||||
| import dm | ||||
|  | ||||
| class MainWin(QMainWindow): | ||||
| @@ -58,33 +58,45 @@ class WorkArea(QWidget): | ||||
|     def initUI(self): | ||||
|  | ||||
|         hbox = QHBoxLayout(self) | ||||
|  | ||||
|         #topleft = QFrame(self) | ||||
|         topleft = QListWidget() | ||||
|         topleft.setFrameShape(QFrame.StyledPanel) | ||||
|  | ||||
|         #topright = QFrame(self) | ||||
|         topright = QTextEdit() | ||||
|         topright.setFrameShape(QFrame.StyledPanel) | ||||
|  | ||||
|         #bottom = QFrame(self) | ||||
|         #bottom.setFrameShape(QFrame.StyledPanel) | ||||
|         # список таблиц | ||||
|         listTablesWidget = QListWidget() | ||||
|         listTablesWidget.setFrameShape(QFrame.StyledPanel) | ||||
|         # таблица для вывода данных | ||||
|         tablesDataWidget = QTableView() | ||||
|         tablesDataWidget.setFrameShape(QFrame.StyledPanel) | ||||
|  | ||||
|         splitter1 = QSplitter(Qt.Horizontal) | ||||
|         splitter1.addWidget(topleft) | ||||
|         splitter1.addWidget(topright) | ||||
|         splitter1.addWidget(listTablesWidget) | ||||
|         splitter1.addWidget(tablesDataWidget) | ||||
|  | ||||
|         splitter2 = QSplitter(Qt.Vertical) | ||||
|         splitter2.addWidget(splitter1) | ||||
|         #splitter2.addWidget(bottom) | ||||
|  | ||||
|         hbox.addWidget(splitter2) | ||||
|  | ||||
|         #textEdit = QListView() | ||||
|         self.setLayout(hbox) | ||||
|  | ||||
|         # выводим список таблиц в левом поле | ||||
|         for i in dm.initDBstructure(): | ||||
|             topleft.addItem(i) | ||||
|             listTablesWidget.addItem(i) | ||||
|  | ||||
|         # заполняем правый список данными из выбранной таблицы | ||||
|         def addList(tbl_name): | ||||
|             # модель для таблицы | ||||
|             #model = QtSql.QSqlQueryModel(parent=None) | ||||
|             #qwery = "SELECT * FROM " + tbl_name | ||||
|             #model.setQuery(qwery) | ||||
|             #tablesDataWidget.setModel(model) | ||||
|  | ||||
|             #tablesDataWidget.setWindowTitle("ddd ddd") | ||||
|             #tablesDataWidget.show() | ||||
|             for j in dm.selectData(tbl_name): | ||||
|                 print(j) | ||||
|                 #tablesDataWidget.addItem(j) | ||||
|  | ||||
|         # обработка нажатия мышой на списке | ||||
|         #listTablesWidget.itemClicked.connect(lambda: dm.selectData(listTablesWidget.currentItem)) | ||||
|         listTablesWidget.itemClicked.connect(lambda: addList(listTablesWidget.model().data(listTablesWidget.currentIndex()))) | ||||
|  | ||||
|  | ||||
|     def onChanged(self, text): | ||||
|   | ||||
| @@ -60,7 +60,7 @@ | ||||
|           "autoIncrement": "yes" | ||||
|         }, | ||||
|         { | ||||
|           "fName": "docname", | ||||
|           "fName": "doc_name", | ||||
|           "fDescr": "Наименование", | ||||
|           "fType": "varchar(100)", | ||||
|           "index": "yes", | ||||
|   | ||||
							
								
								
									
										93
									
								
								test.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										93
									
								
								test.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,93 @@ | ||||
| #!/usr/bin/env python | ||||
|  | ||||
|  | ||||
| ############################################################################# | ||||
| ## | ||||
| ## Copyright (C) 2013 Riverbank Computing Limited. | ||||
| ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). | ||||
| ## All rights reserved. | ||||
| ## | ||||
| ## This file is part of the examples of PyQt. | ||||
| ## | ||||
| ## $QT_BEGIN_LICENSE:BSD$ | ||||
| ## You may use this file under the terms of the BSD license as follows: | ||||
| ## | ||||
| ## "Redistribution and use in source and binary forms, with or without | ||||
| ## modification, are permitted provided that the following conditions are | ||||
| ## met: | ||||
| ##   * Redistributions of source code must retain the above copyright | ||||
| ##     notice, this list of conditions and the following disclaimer. | ||||
| ##   * Redistributions in binary form must reproduce the above copyright | ||||
| ##     notice, this list of conditions and the following disclaimer in | ||||
| ##     the documentation and/or other materials provided with the | ||||
| ##     distribution. | ||||
| ##   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor | ||||
| ##     the names of its contributors may be used to endorse or promote | ||||
| ##     products derived from this software without specific prior written | ||||
| ##     permission. | ||||
| ## | ||||
| ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
| ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
| ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
| ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||||
| ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||||
| ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||||
| ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
| ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
| ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
| ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." | ||||
| ## $QT_END_LICENSE$ | ||||
| ## | ||||
| ############################################################################# | ||||
|  | ||||
|  | ||||
| from PyQt5.QtCore import QModelIndex, Qt | ||||
| from PyQt5.QtGui import QStandardItemModel | ||||
| from PyQt5.QtWidgets import QApplication, QItemDelegate, QSpinBox, QTableView | ||||
|  | ||||
|  | ||||
| class SpinBoxDelegate(QItemDelegate): | ||||
|     def createEditor(self, parent, option, index): | ||||
|         editor = QSpinBox(parent) | ||||
|         editor.setMinimum(0) | ||||
|         editor.setMaximum(100) | ||||
|  | ||||
|         return editor | ||||
|  | ||||
|     def setEditorData(self, spinBox, index): | ||||
|         value = index.model().data(index, Qt.EditRole) | ||||
|  | ||||
|         spinBox.setValue(value) | ||||
|  | ||||
|     def setModelData(self, spinBox, model, index): | ||||
|         spinBox.interpretText() | ||||
|         value = spinBox.value() | ||||
|  | ||||
|         model.setData(index, value, Qt.EditRole) | ||||
|  | ||||
|     def updateEditorGeometry(self, editor, option, index): | ||||
|         editor.setGeometry(option.rect) | ||||
|  | ||||
|  | ||||
| if __name__ == '__main__': | ||||
|  | ||||
|     import sys | ||||
|  | ||||
|     app = QApplication(sys.argv) | ||||
|  | ||||
|     model = QStandardItemModel(4, 4) | ||||
|     tableView = QTableView() | ||||
|     tableView.setModel(model) | ||||
|  | ||||
|     delegate = SpinBoxDelegate() | ||||
|     tableView.setItemDelegate(delegate) | ||||
|  | ||||
|     for row in range(4): | ||||
|         for column in range(4): | ||||
|             index = model.index(row, column, QModelIndex()) | ||||
|             model.setData(index, (row + 1) * (column + 1)) | ||||
|  | ||||
|     tableView.setWindowTitle("Spin Box Delegate") | ||||
|     tableView.show() | ||||
|     sys.exit(app.exec_()) | ||||
		Reference in New Issue
	
	Block a user
	 Sergey Kalinin
					Sergey Kalinin