QDataWidgetMapper 数据库绑定 QLineEdit控件
This commit is contained in:
parent
c306711edd
commit
f5f27ff59e
10 changed files with 322 additions and 9 deletions
|
@ -19,14 +19,19 @@
|
||||||
"CreateTime": "2018-09-18-18:45:14",
|
"CreateTime": "2018-09-18-18:45:14",
|
||||||
"ModifyTime": "2018-09-19-18:16:08"
|
"ModifyTime": "2018-09-19-18:16:08"
|
||||||
},
|
},
|
||||||
"PluginPage3_addAction2": {
|
|
||||||
"Allow": true,
|
|
||||||
"CreateTime": "2018-09-24-20:54:48",
|
|
||||||
"ModifyTime": "2018-09-24-20:57:03"
|
|
||||||
},
|
|
||||||
"PluginPage3_addAction1": {
|
"PluginPage3_addAction1": {
|
||||||
"Allow": true,
|
"Allow": true,
|
||||||
"CreateTime": "2018-09-24-18:26:10",
|
"CreateTime": "2018-09-24-18:26:10",
|
||||||
"ModifyTime": "2018-09-24-20:50:02"
|
"ModifyTime": "2018-09-24-20:50:02"
|
||||||
|
},
|
||||||
|
"PluginPage1": {
|
||||||
|
"Allow": true,
|
||||||
|
"CreateTime": "2018-09-27-16:46:40",
|
||||||
|
"ModifyTime": "2018-10-07-21:37:19"
|
||||||
|
},
|
||||||
|
"PluginPage2": {
|
||||||
|
"Allow": true,
|
||||||
|
"CreateTime": "2018-09-27-16:46:40",
|
||||||
|
"ModifyTime": "2018-09-27-16:47:19"
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!DOCTYPE Project SYSTEM "Project-6.0.dtd">
|
<!DOCTYPE Project SYSTEM "Project-6.0.dtd">
|
||||||
<!-- eric project file for project Plugins -->
|
<!-- eric project file for project Plugins -->
|
||||||
<!-- Saved: 2018-09-24, 21:05:10 -->
|
<!-- Saved: 2018-10-01, 18:41:58 -->
|
||||||
<!-- Copyright (C) 2018 , -->
|
<!-- Copyright (C) 2018 , -->
|
||||||
<Project version="6.0">
|
<Project version="6.0">
|
||||||
<Language></Language>
|
<Language></Language>
|
||||||
|
@ -24,7 +24,6 @@
|
||||||
<Source>Plugins/PluginPage1_addTab4.py</Source>
|
<Source>Plugins/PluginPage1_addTab4.py</Source>
|
||||||
<Source>Plugins/PluginPage2_error.py</Source>
|
<Source>Plugins/PluginPage2_error.py</Source>
|
||||||
<Source>Plugins/PluginPage3_addAction1.py</Source>
|
<Source>Plugins/PluginPage3_addAction1.py</Source>
|
||||||
<Source>Plugins/PluginPage3_addAction2.py</Source>
|
|
||||||
<Source>Plugins/__init__.py</Source>
|
<Source>Plugins/__init__.py</Source>
|
||||||
<Source>Plugins/page1/Ui_PluginPage1.py</Source>
|
<Source>Plugins/page1/Ui_PluginPage1.py</Source>
|
||||||
<Source>Plugins/page1/__init__.py</Source>
|
<Source>Plugins/page1/__init__.py</Source>
|
||||||
|
|
100
partner_625781186/16_sqlModel/01_mapper/MainWindow.py
Normal file
100
partner_625781186/16_sqlModel/01_mapper/MainWindow.py
Normal file
|
@ -0,0 +1,100 @@
|
||||||
|
#-*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
from PyQt5 import QtWidgets, QtGui, QtCore
|
||||||
|
from PyQt5.QtCore import *
|
||||||
|
from PyQt5.QtGui import *
|
||||||
|
from PyQt5.QtWidgets import *
|
||||||
|
from PyQt5.QtSql import *
|
||||||
|
|
||||||
|
import sys
|
||||||
|
|
||||||
|
sys.path.append('./ui')
|
||||||
|
from Ui_MainWindow import Ui_MainWindow
|
||||||
|
|
||||||
|
|
||||||
|
class MainWindow(QMainWindow, Ui_MainWindow):
|
||||||
|
def __init__(self, parent=None, *args):
|
||||||
|
|
||||||
|
super(MainWindow, self).__init__(parent, *args)
|
||||||
|
self.setupUi(self)
|
||||||
|
self.resize(800,600)
|
||||||
|
|
||||||
|
#=============================== db ======================================#
|
||||||
|
# self.db = QSqlDatabase.addDatabase('QMYSQL')
|
||||||
|
# self.db.setHostName("127.0.0.1") # set address
|
||||||
|
# self.db.setUserName("root") # set user name
|
||||||
|
# self.db.setPassword('123456') # set user pwd
|
||||||
|
# self.db.setDatabaseName("database")
|
||||||
|
|
||||||
|
self.db = QSqlDatabase.addDatabase('QSQLITE')
|
||||||
|
self.db.setDatabaseName('./db/database.db')
|
||||||
|
|
||||||
|
#================================= codemodel =====================================#
|
||||||
|
# 实例化model
|
||||||
|
self.codeModel = QSqlRelationalTableModel()
|
||||||
|
# model设置表
|
||||||
|
self.initializeModel(self.codeModel, 'Mongo')
|
||||||
|
# 设置编辑策略
|
||||||
|
# self.codeModel.setEditStrategy(QSqlTableModel.OnFieldChange)
|
||||||
|
# !!! 这里要注意 , 只能用这个策略 , 才可以实现自动提交
|
||||||
|
self.codeModel.setEditStrategy(QSqlTableModel.OnManualSubmit)
|
||||||
|
|
||||||
|
self.codeView = self.createView("code_View", self.codeModel)
|
||||||
|
self.verticalLayout.addWidget(self.codeView)
|
||||||
|
|
||||||
|
#================================ initData ==================================#
|
||||||
|
# 数据映射
|
||||||
|
self.mapper = QDataWidgetMapper()
|
||||||
|
# 提交策略
|
||||||
|
self.mapper.setSubmitPolicy(QDataWidgetMapper.AutoSubmit)
|
||||||
|
# 映射的模型源
|
||||||
|
self.mapper.setModel(self.codeModel)
|
||||||
|
self.mapper.addMapping(self.l1,0)
|
||||||
|
self.mapper.addMapping(self.l2,1)
|
||||||
|
self.mapper.addMapping(self.l3,2)
|
||||||
|
self.mapper.addMapping(self.l4,3)
|
||||||
|
self.mapper.addMapping(self.l5,4)
|
||||||
|
|
||||||
|
self.mapper.toFirst()
|
||||||
|
|
||||||
|
#================================ pushButton ==================================#
|
||||||
|
self.sub_btn.clicked.connect(self.mapper.submit)
|
||||||
|
self.sub_btn.clicked.connect(self.codeModel.submitAll)
|
||||||
|
self.pre_btn.clicked.connect(self.mapper.toPrevious)
|
||||||
|
self.next_btn.clicked.connect(self.mapper.toNext)
|
||||||
|
|
||||||
|
def initializeModel(self, model, tablename):
|
||||||
|
'''重关联。'''
|
||||||
|
model.setTable(tablename)
|
||||||
|
# model.setEditStrategy(QSqlTableModel.OnRowChange)
|
||||||
|
model.select()
|
||||||
|
|
||||||
|
def createView(self, title, model):
|
||||||
|
'''创建TableView视图'''
|
||||||
|
view = QTableView()
|
||||||
|
view.setModel(model)
|
||||||
|
view.setWindowTitle(title)
|
||||||
|
#列宽设置
|
||||||
|
view.horizontalHeader().setSectionResizeMode(3)
|
||||||
|
#行高设置
|
||||||
|
view.verticalHeader().setSectionResizeMode(1)
|
||||||
|
#充满列宽
|
||||||
|
view.horizontalHeader().setStretchLastSection(True)
|
||||||
|
# view.verticalHeader().setVisible(False)#隐藏行标题
|
||||||
|
#标题左对齐
|
||||||
|
view.horizontalHeader().setDefaultAlignment(Qt.AlignLeft)
|
||||||
|
#标题左对齐
|
||||||
|
view.verticalHeader().setDefaultAlignment(Qt.AlignLeft)
|
||||||
|
|
||||||
|
return view
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
import sys
|
||||||
|
|
||||||
|
app = QApplication(sys.argv)
|
||||||
|
app.setStyle(QStyleFactory.create("Fusion"))
|
||||||
|
ui = MainWindow()
|
||||||
|
ui.show()
|
||||||
|
sys.exit(app.exec_())
|
||||||
|
|
4
partner_625781186/16_sqlModel/01_mapper/README.md
Normal file
4
partner_625781186/16_sqlModel/01_mapper/README.md
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
# QDataWidgetMapper 数据库绑定 QLineEdit控件
|
||||||
|
|
||||||
|
|
||||||
|
![1](ScreenShot/1.gif)
|
BIN
partner_625781186/16_sqlModel/01_mapper/ScreenShot/1.gif
Normal file
BIN
partner_625781186/16_sqlModel/01_mapper/ScreenShot/1.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 137 KiB |
0
partner_625781186/16_sqlModel/01_mapper/__init__.py
Normal file
0
partner_625781186/16_sqlModel/01_mapper/__init__.py
Normal file
BIN
partner_625781186/16_sqlModel/01_mapper/db/database.db
Normal file
BIN
partner_625781186/16_sqlModel/01_mapper/db/database.db
Normal file
Binary file not shown.
110
partner_625781186/16_sqlModel/01_mapper/ui/MainWindow.ui
Normal file
110
partner_625781186/16_sqlModel/01_mapper/ui/MainWindow.ui
Normal file
|
@ -0,0 +1,110 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>MainWindow</class>
|
||||||
|
<widget class="QMainWindow" name="MainWindow">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>486</width>
|
||||||
|
<height>313</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>MainWindow</string>
|
||||||
|
</property>
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">QListView::item:alternate {
|
||||||
|
|
||||||
|
background-color: rgb(85, 255, 255);
|
||||||
|
}</string>
|
||||||
|
</property>
|
||||||
|
<property name="tabShape">
|
||||||
|
<enum>QTabWidget::Rounded</enum>
|
||||||
|
</property>
|
||||||
|
<property name="dockOptions">
|
||||||
|
<set>QMainWindow::AllowTabbedDocks|QMainWindow::AnimatedDocks</set>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget" name="centralWidget">
|
||||||
|
<layout class="QGridLayout" name="verticalLayout">
|
||||||
|
<item row="6" column="0">
|
||||||
|
<widget class="QLineEdit" name="l3"/>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="0">
|
||||||
|
<widget class="QLineEdit" name="l1"/>
|
||||||
|
</item>
|
||||||
|
<item row="5" column="0">
|
||||||
|
<widget class="QLineEdit" name="l2"/>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QPushButton" name="pre_btn">
|
||||||
|
<property name="text">
|
||||||
|
<string>上一条</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QTableView" name="tableView"/>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0">
|
||||||
|
<widget class="QPushButton" name="next_btn">
|
||||||
|
<property name="text">
|
||||||
|
<string>下一条</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QListView" name="listView"/>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="0">
|
||||||
|
<widget class="QPushButton" name="sub_btn">
|
||||||
|
<property name="text">
|
||||||
|
<string>提交</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="7" column="0">
|
||||||
|
<widget class="QLineEdit" name="l4"/>
|
||||||
|
</item>
|
||||||
|
<item row="8" column="0">
|
||||||
|
<widget class="QLineEdit" name="l5"/>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<action name="saveaction">
|
||||||
|
<property name="text">
|
||||||
|
<string>保存</string>
|
||||||
|
</property>
|
||||||
|
<property name="shortcut">
|
||||||
|
<string>Ctrl+D</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
|
<action name="action12">
|
||||||
|
<property name="text">
|
||||||
|
<string>查看帮助文档</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
|
<action name="actionas">
|
||||||
|
<property name="text">
|
||||||
|
<string>关于</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
|
<action name="actiondz">
|
||||||
|
<property name="text">
|
||||||
|
<string>dz</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
|
<action name="actiongc">
|
||||||
|
<property name="text">
|
||||||
|
<string>gc</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
|
<action name="actiondb">
|
||||||
|
<property name="text">
|
||||||
|
<string>db</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
95
partner_625781186/16_sqlModel/01_mapper/ui/Ui_MainWindow.py
Normal file
95
partner_625781186/16_sqlModel/01_mapper/ui/Ui_MainWindow.py
Normal file
|
@ -0,0 +1,95 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
# Form implementation generated from reading ui file 'D:\QGroup_432987409\WoHowLearn\0.M_I_pyqt\partner_625781186\CodeTip\ui\MainWindow.ui'
|
||||||
|
#
|
||||||
|
# Created by: PyQt5 UI code generator 5.10.1
|
||||||
|
#
|
||||||
|
# WARNING! All changes made in this file will be lost!
|
||||||
|
|
||||||
|
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||||
|
|
||||||
|
class Ui_MainWindow(object):
|
||||||
|
def setupUi(self, MainWindow):
|
||||||
|
MainWindow.setObjectName("MainWindow")
|
||||||
|
MainWindow.resize(486, 313)
|
||||||
|
MainWindow.setStyleSheet("QListView::item:alternate {\n"
|
||||||
|
" \n"
|
||||||
|
" background-color: rgb(85, 255, 255);\n"
|
||||||
|
"}")
|
||||||
|
MainWindow.setTabShape(QtWidgets.QTabWidget.Rounded)
|
||||||
|
MainWindow.setDockOptions(QtWidgets.QMainWindow.AllowTabbedDocks|QtWidgets.QMainWindow.AnimatedDocks)
|
||||||
|
self.centralWidget = QtWidgets.QWidget(MainWindow)
|
||||||
|
self.centralWidget.setObjectName("centralWidget")
|
||||||
|
self.verticalLayout = QtWidgets.QGridLayout(self.centralWidget)
|
||||||
|
self.verticalLayout.setObjectName("verticalLayout")
|
||||||
|
self.l3 = QtWidgets.QLineEdit(self.centralWidget)
|
||||||
|
self.l3.setObjectName("l3")
|
||||||
|
self.verticalLayout.addWidget(self.l3, 6, 0, 1, 1)
|
||||||
|
self.l1 = QtWidgets.QLineEdit(self.centralWidget)
|
||||||
|
self.l1.setObjectName("l1")
|
||||||
|
self.verticalLayout.addWidget(self.l1, 4, 0, 1, 1)
|
||||||
|
self.l2 = QtWidgets.QLineEdit(self.centralWidget)
|
||||||
|
self.l2.setObjectName("l2")
|
||||||
|
self.verticalLayout.addWidget(self.l2, 5, 0, 1, 1)
|
||||||
|
self.pre_btn = QtWidgets.QPushButton(self.centralWidget)
|
||||||
|
self.pre_btn.setObjectName("pre_btn")
|
||||||
|
self.verticalLayout.addWidget(self.pre_btn, 1, 0, 1, 1)
|
||||||
|
self.tableView = QtWidgets.QTableView(self.centralWidget)
|
||||||
|
self.tableView.setObjectName("tableView")
|
||||||
|
self.verticalLayout.addWidget(self.tableView, 0, 0, 1, 1)
|
||||||
|
self.next_btn = QtWidgets.QPushButton(self.centralWidget)
|
||||||
|
self.next_btn.setObjectName("next_btn")
|
||||||
|
self.verticalLayout.addWidget(self.next_btn, 2, 0, 1, 1)
|
||||||
|
self.listView = QtWidgets.QListView(self.centralWidget)
|
||||||
|
self.listView.setObjectName("listView")
|
||||||
|
self.verticalLayout.addWidget(self.listView, 0, 1, 1, 1)
|
||||||
|
self.sub_btn = QtWidgets.QPushButton(self.centralWidget)
|
||||||
|
self.sub_btn.setObjectName("sub_btn")
|
||||||
|
self.verticalLayout.addWidget(self.sub_btn, 3, 0, 1, 1)
|
||||||
|
self.l4 = QtWidgets.QLineEdit(self.centralWidget)
|
||||||
|
self.l4.setObjectName("l4")
|
||||||
|
self.verticalLayout.addWidget(self.l4, 7, 0, 1, 1)
|
||||||
|
self.l5 = QtWidgets.QLineEdit(self.centralWidget)
|
||||||
|
self.l5.setObjectName("l5")
|
||||||
|
self.verticalLayout.addWidget(self.l5, 8, 0, 1, 1)
|
||||||
|
MainWindow.setCentralWidget(self.centralWidget)
|
||||||
|
self.saveaction = QtWidgets.QAction(MainWindow)
|
||||||
|
self.saveaction.setObjectName("saveaction")
|
||||||
|
self.action12 = QtWidgets.QAction(MainWindow)
|
||||||
|
self.action12.setObjectName("action12")
|
||||||
|
self.actionas = QtWidgets.QAction(MainWindow)
|
||||||
|
self.actionas.setObjectName("actionas")
|
||||||
|
self.actiondz = QtWidgets.QAction(MainWindow)
|
||||||
|
self.actiondz.setObjectName("actiondz")
|
||||||
|
self.actiongc = QtWidgets.QAction(MainWindow)
|
||||||
|
self.actiongc.setObjectName("actiongc")
|
||||||
|
self.actiondb = QtWidgets.QAction(MainWindow)
|
||||||
|
self.actiondb.setObjectName("actiondb")
|
||||||
|
|
||||||
|
self.retranslateUi(MainWindow)
|
||||||
|
QtCore.QMetaObject.connectSlotsByName(MainWindow)
|
||||||
|
|
||||||
|
def retranslateUi(self, MainWindow):
|
||||||
|
_translate = QtCore.QCoreApplication.translate
|
||||||
|
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
|
||||||
|
self.pre_btn.setText(_translate("MainWindow", "上一条"))
|
||||||
|
self.next_btn.setText(_translate("MainWindow", "下一条"))
|
||||||
|
self.sub_btn.setText(_translate("MainWindow", "提交"))
|
||||||
|
self.saveaction.setText(_translate("MainWindow", "保存"))
|
||||||
|
self.saveaction.setShortcut(_translate("MainWindow", "Ctrl+D"))
|
||||||
|
self.action12.setText(_translate("MainWindow", "查看帮助文档"))
|
||||||
|
self.actionas.setText(_translate("MainWindow", "关于"))
|
||||||
|
self.actiondz.setText(_translate("MainWindow", "dz"))
|
||||||
|
self.actiongc.setText(_translate("MainWindow", "gc"))
|
||||||
|
self.actiondb.setText(_translate("MainWindow", "db"))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
import sys
|
||||||
|
app = QtWidgets.QApplication(sys.argv)
|
||||||
|
MainWindow = QtWidgets.QMainWindow()
|
||||||
|
ui = Ui_MainWindow()
|
||||||
|
ui.setupUi(MainWindow)
|
||||||
|
MainWindow.show()
|
||||||
|
sys.exit(app.exec_())
|
||||||
|
|
|
@ -132,8 +132,8 @@ class MyEngineView(QWebEngineView):
|
||||||
|
|
||||||
def _downloadProgress(self , bytesReceived:"qint64", bytesTotal:"qint64"):
|
def _downloadProgress(self , bytesReceived:"qint64", bytesTotal:"qint64"):
|
||||||
# bytesReceived 当前下载值 ; bytesTotal 文件总大小值
|
# bytesReceived 当前下载值 ; bytesTotal 文件总大小值
|
||||||
self.bytesReceived = bytesReceived
|
# self.bytesReceived = bytesReceived
|
||||||
self.bytesTotal = bytesTotal
|
# self.bytesTotal = bytesTotal
|
||||||
print(bytesReceived , bytesTotal )
|
print(bytesReceived , bytesTotal )
|
||||||
|
|
||||||
def _finished(self):
|
def _finished(self):
|
||||||
|
|
Loading…
Reference in a new issue