PyQt5数据库开发1 4.3 QSqlTableModel 之 相关槽函数的实现(多图长文详解)
目录
一、打开数据库表
1. 写打开数据库的槽函数
2. 运行后发现数据库可以打开了
3. ODBC配通了,数据库还是打不开
4. 写在tableView上显示数据库表的函数
5. 运行后发现表可以显示了
6. 代码分析
7. 添加列名称
8. 根据内容调整列宽
9. 备注:数据库连接串
二、建立tableview与右侧组件的关联
1. 当前无关联
2. 添加关联代码
3. 运行程序
4. 添加选择行变化的信号与槽函数
5. 运行程序
6. 发现tableView可以选择多行
7. 添加代码,限制tableView
8. 运行程序,发现没法选多行了
三、排序
1. 排序下拉框没内容
2. 补充相关函数和调用
3. 运行程序,发现排序下拉框有内容了
4. 排序下拉框的信号与槽
5. 添加槽函数
6. 运行程序
7. 升序和降序两个单选按钮的信号与槽函数
8. 添加槽函数
9. 运行测试升序降序功能
四、数据过滤
1. 添加槽函数
2. 测试过滤功能
3. 发现bug
4. 去Qt修改
5. 运行程序
6. 添加代码,让数据库打开时,排序和过滤功能能用
7. 运行程序
五、工具按钮状态
1. 当前工具按钮状态
2. 添加改变按钮状态的代码
3. 运行程序
六、涨工资按钮
1. 涨工资代码
2. 去数据库查一下原始数据
3. 运行程序
4. 去数据库查一下现在的数据
5. 代码分析
七、删除、保存、取消按钮
1. 删除按钮代码
2. 运行程序
3. 去数据库里面查,发现数据还在
4. 添加保存和取消代码
5. 运行程序
6. 添加模型相关代码
7. 测试取消按钮
8. 测试保存按钮
八、数据的修改
1. 修改前数据
2. 修改数据
九、tableview里数据的修改
1. bug
2. 自定义代理组件
3. 修改代码,添加自定义组件
4. 运行程序,发现tableview里面的变化
十、添加和插入按钮
1. 添加代码
2. 测试添加功能
3. 测试插入功能
一、打开数据库表
1. 写打开数据库的槽函数
在qt上的actOpenDB这个action上点击右键,选择转到槽
选择triggered信号
复制函数名
在myMainWindow.py中添加函数
2. 运行后发现数据库可以打开了
3. ODBC配通了,数据库还是打不开
如果ODBC配通了,数据库还是打不开,可以考虑将连接串里面的localhost换成
(1)127.0.0.1
(2)主机名
4. 写在tableView上显示数据库表的函数
添加相应的import模块
5. 运行后发现表可以显示了
虽然很难看
6. 代码分析
self.DB是连接上的数据库
tableModel是PyQt5预定义的数据模型,用来作为数据库中一个数据库表的数据模型。
PyQt5使用Model/View结构来处理界面与数据。
Model从源数据提取需要的数据,用于视图组件进行显示和编辑
7. 添加列名称
插入红框中的代码
运行后可以看到表头信息出来了
8. 根据内容调整列宽
列太宽了,很难看。加多这条语句
输出结果好看多了
9. 备注:数据库连接串
也可以这么写
二、建立tableview与右侧组件的关联
1. 当前无关联
当前tableview里面选择某个行,右侧是无反应的
2. 添加关联代码
同时import若干新模块
插入
3. 运行程序
发现右边groupbox出现第一条数据。无论左边tableview点哪个单元格,右边的groupbox都不跟着变化
4. 添加选择行变化的信号与槽函数
5. 运行程序
换个地方点击
6. 发现tableView可以选择多行
按住Ctrl键,在多条记录上选择,发现可以选多行
7. 添加代码,限制tableView
在__init__函数中限制
8. 运行程序,发现没法选多行了
三、排序
1. 排序下拉框没内容
当前这个下拉框里面是没东西的,运行的时候点没反应
2. 补充相关函数和调用
3. 运行程序,发现排序下拉框有内容了
4. 排序下拉框的信号与槽
5. 添加槽函数
import新模块
添加红色框框内代码。注意要在前面写上@pyqtSlot(int),说明其参数为int类型
6. 运行程序
换一种排序方式
7. 升序和降序两个单选按钮的信号与槽函数
升序
降序
8. 添加槽函数
9. 运行测试升序降序功能
四、数据过滤
1. 添加槽函数
2. 测试过滤功能
3. 发现bug
原因是这些按钮在数据库没打开时不应该能按。排序相关功能也有类似的错误
4. 去Qt修改
将groupBoxSort的enabled属性里面的勾去掉
同样,将groupBoxFilter的相关属性也去掉
保存,退出qt
在Eric6工程目录下运行批处理文件或者将form文件拷贝到Eric6工程目录,然后在Eric6下编译form(因为改动没有涉及资源,所以直接在eric6下编译form就行了)
5. 运行程序
现在数据库没打开时,排序和过滤相应按钮都没法按了
6. 添加代码,让数据库打开时,排序和过滤功能能用
在opentable函数的最后加入如下代码
7. 运行程序
打开数据库以后,排序和过滤按钮能用了
五、工具按钮状态
1. 当前工具按钮状态
打开数据库后,打开按钮不应该还能用,不能多次重复打开数据库。而添加、插入、删除、涨工资、保存、修改等按钮应该变成有效状态,可以让人点击才对
2. 添加改变按钮状态的代码
3. 运行程序
数据库打开后,添加、插入、删除、涨工资相关按钮能按了。保存和取消按钮现在还不能按,改了数据后才能按。
六、涨工资按钮
1. 涨工资代码
2. 去数据库查一下原始数据
3. 运行程序
按涨工资键前
按涨工资键后
都涨了10%
4. 去数据库查一下现在的数据
数据全改了
5. 代码分析
七、删除、保存、取消按钮
1. 删除按钮代码
2. 运行程序
点完后,界面变成了这样
3. 去数据库里面查,发现数据还在
为什么没删掉,没有submit
4. 添加保存和取消代码
5. 运行程序
点删除后,发现这两个按钮还是不能按
当前鼠标换别的数据行试试
6. 添加模型相关代码
在opentable函数这里,添加一行
补充槽函数
7. 测试取消按钮
删除完之后,换别的单元格,发现保存和取消按钮可以用了。这是因为触发了do_currentChanged
先点取消按钮
点完后
到底删掉没有?点一下全显示按钮
数据回来了,取消删除成功
去数据库里面查一查,数据还在
8. 测试保存按钮
删除华筝的记录后,点保存按钮
输出
去数据库里查一查
八、数据的修改
1. 修改前数据
2. 修改数据
将黄蓉的工资改为200,出生日期改为4月29日,备注也改一下
点完后
按一下取消键,数据行变回原样
再改一次,这次按保存键
查询数据库,发现数据被改了
改一下黄蓉的性别和省份,按保存
数据库里查查,改掉了
![]()
九、tableview里数据的修改
1. bug
在右边的groupbox里的数据修改没问题,在左边的tableview里面修改就有问题
弹出修改框,随便乱改,变成下面的样子
按保存,去数据库里面查,发现已经把性别改成了不合理的数据X
在右侧的groupbox里,由于限制了性别只能去男和女,所以显示不出来X
要解决这个问题,要对tableview里面数据的修改进行限制
2. 自定义代理组件
tableview默认的单元格编辑组件是QlineEdit,对输入的数据无法限制。可以为某列设置自定义代理组件,比如QcommoBox。在上面的bug中,希望把性别的编辑组件改成QcommoBox,只能选择某些项(比如男和女),而不能随便输入。
新建文件myDelegates.py,创建一个
3. 修改代码,添加自定义组件
在opentable函数中插入红色框框中的代码
4. 运行程序,发现tableview里面的变化
十、添加和插入按钮
1. 添加代码
import模块
插入红色框框部分代码
2. 测试添加功能
查数据库,新记录出现了
3. 测试插入功能
查查数据库,新纪录出现。数据库语句没有排序字段,所以新纪录出现在最后
相关文章:
![](https://img-blog.csdnimg.cn/e13f500da02a4d4c99324ddc326e5749.png)
PyQt5数据库开发1 4.3 QSqlTableModel 之 相关槽函数的实现(多图长文详解)
目录 一、打开数据库表 1. 写打开数据库的槽函数 2. 运行后发现数据库可以打开了 3. ODBC配通了,数据库还是打不开 4. 写在tableView上显示数据库表的函数 5. 运行后发现表可以显示了 6. 代码分析 7. 添加列名称 8. 根据内容调整列宽 9. 备注:…...
![](https://img-blog.csdnimg.cn/4a93dcf091cc497b83d3cef1289cb03a.png)
QT 设计一个串口调试工具,用一个工程就能轻松解决,外加虚拟串口工具模拟调试,在日常工作中可类比模块间通信,非常详细建议收藏
QT 串口调试工具第一节 虚拟串口工具安装第二节 QT创建一个基于QWidget的项目第三节 UI界面设计第三节 项目头文件widget.h第四节 项目实现文件widget.cpp第五节 main函数第六节 编译结果重点第七节 使用QT打包程序,不安装QT的电脑可使用第一节 虚拟串口工具安装 -…...
![](https://img-blog.csdnimg.cn/ac31b6ae18b5490ca805ab80e8363f19.png)
OpenSumi 是信创开发云的首选
原文作者:行云创新技术总监 邓冰寒 引言 随着云原生应用的日益普及,开发上云也逐步被越来越多的厂商和开发者接受,在这个赛道国内外有不少玩家,国外的 GitHub Codespaces、CodeSandbox,GitPod、亚马逊 Cloud9…...
![](https://img-blog.csdnimg.cn/1b76b3fc6e264e17a8a9b1d4da9e3170.png)
JdbcTemplate常用方法解析
文章目录1.JdbcTemplate简介2.JdbcTemplate主要方法:3.常用方法介绍update()方法增删改query()查询方法1.JdbcTemplate简介 JdbcTemplate是Spring JDBC的核心类,借助该类提供的方法可以很方便的实现数据的增删改查。 Spring对数据库的操作在jdbc上面做…...
![](https://img-blog.csdnimg.cn/img_convert/847c79ab6f84697ee27dadd24fac0d4b.jpeg)
生物素标记试剂1869922-24-6,Alkyne-PEG3-Biotin PC,炔烃PEG3生物素PC
1、试剂基团反应特点(Reagent group reaction characteristics):PC alkyne-PEG3-Biotin含一个炔烃和一个 PEG 链接的可光裂解生物素基团。含 3 个单元 PEG 的 ADC linker,生物素本身是个游离的小分子,在生物实验中常常…...
![](https://img-blog.csdnimg.cn/b8ccec91b881418b80ab6f97e898aacf.png#pic_center)
CS224W课程学习笔记(三):DeepWalk算法原理与说明
引言 什么是图嵌入? 图嵌入(Graph Embedding,也叫Network Embedding) 是一种将图数据(通常为高维稠密的矩阵)映射为低微稠密向量的过程,能够很好地解决图数据难以高效输入机器学习算法的问题。…...
![](https://img-blog.csdnimg.cn/img_convert/c50878fb610105f0d2d365e5240b0171.jpeg)
rk3568 开发板Ubuntu系统说明
Ubuntu MinimalUbuntu Minimal系统基于Ubuntu 64bit系统构建,目前发布有Ubuntu18.04这个版本。与Ubuntu Desktop 相比具有以下特性:没有桌面环境,占用资源少,在简化网络管理之后,只需40M内存;针对嵌入式平台…...
![](https://www.ngui.cc/images/no-images.jpg)
Windows和Linux常用HASH算法使用命令
Windows和Linux常用hash算法使用命令 Windows,以文件xxx.zip为例 Windows 求文件 md5 certutil -hashfile xxx.zip md5Windows 求文件 sha1 certutil -hashfile xxx.zip sha1Windows 求文件 sha256 certutil -hashfile xxx.zip sha256Linux,以文件xxx.z…...
![](https://img-blog.csdnimg.cn/d81f979a56af4738807c847676311adb.png)
货仓选址 AcWing(JAVA)
在一条数轴上有 N家商店,它们的坐标分别为 A1∼AN。 现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送商品。 为了提高效率,求把货仓建在何处,可以使得货仓到每家商店的距离之和最小。 输入格式&#…...
![](https://img-blog.csdnimg.cn/41f99543d5304e609275feb467c9c6c7.png)
SPI+DMA传输性能比较
本文章仅仅简单记录32单片机的SPIDMA驱动显示屏的性能测试,这里不花费时间介绍SPI和DMA。 硬件材料:SPI显示屏一个,32单片机 软件材料: 1.LCD的SPI驱动显示程序(SPI / SPIDMA): (1&a…...
![](https://img-blog.csdnimg.cn/943f5d5bc835432faf627f4ce6ce08fd.png)
Centos7系统编译Hadoop3.3.4
1、背景 最近在学习hadoop,此篇文章简单记录一下通过源码来编译hadoop。为什么要重新编译hadoop源码,是因为为了匹配不同操作系统的本地库环境。 2、编译源码 2.1 下载并解压源码 [roothadoop01 ~]# mkdir /opt/hadoop [roothadoop01 ~]# cd /opt/had…...
![](https://www.ngui.cc/images/no-images.jpg)
pb并发控制
并发控制(一) 并发能力是指多用户在同一时间对相同数据同时访问的能力。一般的关系型数据库都具 有并发控制的能力,但是这种并发功能也会对数据的一致性带来危险。试想若有两个用 户都试图访问某个银行用户的记录并同时要求修改该用户的存款余额时,情况将会怎样 呢?我们可以…...
![](https://www.ngui.cc/images/no-images.jpg)
登录拦截器
文章目录前言一、interceptor1.interceptor 包下新建loginInterceptor.java2.config 包下新建 AdminWebConfig.java3.返回登录页面接收提示信息前言 本篇主要介绍spring框架里提供的 HandlerInterceptor 拦截器做登录拦截。 一、interceptor 1.interceptor 包下新建loginInte…...
![](https://www.ngui.cc/images/no-images.jpg)
STM32 - HAL库UART串口
1.串口初始化配置/******************************************************************************* Function: BSP_UART_Init Description: 串口初始化 Input: instance 串口号baudRate: 波特率 Output: 无 Return: 无 ************************************************…...
![](https://www.ngui.cc/images/no-images.jpg)
Vue3 的状态管理库(Pinia)
目录前言:一、什么是 Pinai二、安装与使用pinia三、什么是 store四、state1. 定义 state2. 组件中访问 state五、Getters1. 定义 Getters2. 在组件中使用 Getters六、Actions1. 定义Actions2. 组件中访问 Actions总结:前言: 在编写vue里的项目…...
![](https://img-blog.csdnimg.cn/2ac1e6291bca4b8f910925391833d262.png)
信息系统项目管理师知识点汇总(2023最新)
信息系统项目管理师 信息系统项目管理师简介如何应对考试考试细节与学习 十大管理 十大管理四十七过程 信息化和信息系统 项目管理基础 项目整体管理 项目范围管理 项目进度管理 项目成本管理 项目质量管理 项目人力资源管理 项目沟通管理 项目干系人管理 项目风险…...
![](https://img-blog.csdnimg.cn/img_convert/5b621db06144e6dab0645a2bc13b95f7.png)
标题标题标题
图床(Typora uPic/PicGo 七牛云) 图床(Typora uPic/PicGo 七牛云) 笔者平时使用 Typora 编写 markdown 文档,文档中常常会放置图片,如果文档不需要分享的话,其实讲图片存放在本地就可以了…...
![](https://www.ngui.cc/images/no-images.jpg)
OKR学习总结二
总结 绩效管理不是进行事后管理,而是参与整个过程并进行实时把控。 我们将受益目标分为两个子目标: 新增收入和重复收入。第一部分目标由市场营销部承担,第二个目标则由产品部承担。 简而言之,文化是一系列价值观和信仰的体现&…...
![](https://img-blog.csdnimg.cn/img_convert/c3b4f13cbe251167a52329a3cd073741.png)
MAC中docker搭建fastdfs
1:首先搭建Docker2:通过Docker搭建fastdfs(1)查找镜像打开终端通命令查找fastdfs的镜像docker search fastdfs(二)拉取镜像在找到合适的镜像后执行命令:docker pull delron/fastdfs(三) 创建storage和track…...
![](https://img-blog.csdnimg.cn/img_convert/892bc606da51e7196d36b5ba35b81855.gif)
JavaScript 变量
变量是用于存储信息的"容器"。实例var x5;var y6;var zxy;尝试一下 就像代数那样x5y6zxy在代数中,我们使用字母(比如 x)来保存值(比如 5)。通过上面的表达式 zxy,我们能够计算出 z 的值为 11。在…...
![](https://www.ngui.cc/images/no-images.jpg)
【前端验证】环境仿真中对于寄存器配置的随机策略讨论
前言 本篇文章旨在讨论环境仿真中对于寄存器配置的随机。 寄存器域的随机性 使用ralgen生成的寄存器本身是rand属性的,也就是说其自身是可以通过约束随机的方式在用例中进行随机性配置的,比如下面这个寄存器: class ral_reg_REG_PRJ_sys_cfg_base_config extends uvm_re…...
![](https://img-blog.csdnimg.cn/img_convert/1fa9d3fd7708ed3edee33ab78f0fca9b.png)
Servlet如何读取Web资源文件?【操作演示】
在实际开发中,有时候可能会需要读取Web应用中的一些资源文件,比如配置文件,图片等。为此,在ServletContext接口中定义了一些读取Web资源的方法,这些方法是依靠Servlet容器来实现的。Servlet容器根据资源文件相对于Web应…...
![](https://img-blog.csdnimg.cn/ceff97eb9c2d48319676419919166b87.png)
[ vulhub漏洞复现篇 ] Drupal 远程代码执行漏洞(CVE-2019-6339)
🍬 博主介绍 👨🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…...
![](https://img-blog.csdnimg.cn/img_convert/c7a52bfbe43a70c6a6f0ea76e7e4113f.png)
flex-shrink和felx-grow
本文就是简单的介绍下flex-shrink和felx-grow的作用和计算方式吧;关于这个介绍也是很多;flex-shrinkflex-shrink是flex布局中的一种方式,简单来说,就是当布局大小小于容器大小的时候,使用flex-shrink能够按照一定的比例…...
![](https://img-blog.csdnimg.cn/img_convert/2d4562ec99f64999833cdec30358c5ea.png)
将HTTP接口配置成HTTPS
一、使用Java的keytool.exe程序生成本机的TLS许可找到Java的jdk目录进入bin默认安装路径C:\Program Files\Java\jdk1.8.0_91\bin 进入命令面板,在bin的路径栏中输入cmd敲击回车即可使用keytoolkeytool -genkeypair -alias tomcat_https -keypass 123456 -keyalg RSA…...
![](https://www.ngui.cc/images/no-images.jpg)
YOLOV5报错解决办法
🌈🌈😄😄 欢迎来到茶色岛独家岛屿,本期将为大家揭晓YOLOV5报错解决办法,做好准备了么,那么开始吧。 🌲🌲🐴🐴 1.在pycharm终端使用pip install…...
![](https://img-blog.csdnimg.cn/img_convert/2348e67609e140a49f30f62e580f78f5.png)
java final关键字 详解
概述:作用:细节:演示:总结:一、概述 : final [ˈ faɪnl],最终的,最后的,决定性的,不可改变的。final作为Java中的一个关键字可以用来修饰类,方法,…...
![](https://img-blog.csdnimg.cn/30f4f1e9df8843a1a6ae882d2eac0db0.png)
Vbs_To_Exe制作简易exe程序
文章目录一、准备vbs脚本文件二、工具打包exe一、准备vbs脚本文件 新建一个文本文档 复制下面代码到文本文档中 Set speech CreateObject("SAPI.SpVoice") speech.Speak "l love you!"修改文本后缀为.vbs。编码选择ANSI(解决中文乱码问题&am…...
![](https://img-blog.csdnimg.cn/img_convert/73877c2f4e440ff78e27d20b92ab9314.png)
AI制药 - TMScore(US-align)、RMSD、Sequence 源码
欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/129125467 参考文档:Nature Methods | 蛋白、RNA、DNA及其复合物结构的比对算法US-align 官网地址:https://zhanggroup.org/US-align/ TMScore TMScore,…...
![](https://www.ngui.cc/images/no-images.jpg)
关于个人的经历
简介 我是一个意外接触微机技术的五年专生(前三年寄读一个中专,后两年回大专学校),2020年中考失利,以高中线上30分去了现在所在五年专,专业是软件,目前个人已过程序员,网管,信息处理员ÿ…...
![](https://img-blog.csdnimg.cn/20190525234922679.png)
盖世汽车是模仿美国哪个网站做的/seo网站推广优化
首先,对于近日围绕着“华为、美国、google、Github”等这些主题的报道,我个人是绝对挺华为的,但会更理性一些,从技术角度出发去解决根本问题,也就是任总在访谈中提到的那些。不得不说,任总真是个伟大的企业…...
![](https://img2018.cnblogs.com/blog/814849/201904/814849-20190424135657773-1968718247.png)
如何把地图放到自己做的网站上/百度推广登录地址
转载于:https://www.cnblogs.com/lianghong881018/p/10761990.html...
![](/images/no-images.jpg)
郑州做网站哪家便宜/安卓神级系统优化工具
问题 最近服务器上面出现如下安全问题: 允许Traceroute探测ICMP timestamp请求响应漏洞 解决 允许Traceroute探测 firewall-cmd --get-icmptypes firewall-cmd --add-icmp-blocktime-exceeded --permanentICMP timestamp请求响应漏洞 firewall-cmd --add-icmp…...
![](https://img-blog.csdnimg.cn/img_convert/bf58228d533b975b6b67de57377e10ae.png)
siren wordpress/爱站网域名查询
在日常业务运维中,经常会受到权限的困扰,给多了就违背了最小权限原则,造成系统出现一些安全隐患,给少了业务又无法正常进行,下面我们来看看如何优雅的控制系统权限,保证系统安全。0x01修改应用版本信息修改…...
![](/images/no-images.jpg)
个人做的卖货网站/百度公司在哪
Android• 李魔佛 发表了文章 • 7 个评论 • 8642 次浏览 • 2017-12-12 00:24• 来自相关话题因为最近经常弹出一个OTA的更新包,以前一直都是对这些更新不感冒,通常都是直接忽略的。 但是看到这一个版本好像修复了不少的bugs,想着升级一次把…...
![](/images/no-images.jpg)
网站营销策略怎么写/网络营销环境
...