目录
在qt上的actOpenDB这个action上点击右键,选择转到槽
选择triggered信号
复制函数名
在myMainWindow.py中添加函数
如果ODBC配通了,数据库还是打不开,可以考虑将连接串里面的localhost换成 (1)127.0.0.1 (2)主机名
添加相应的import模块
虽然很难看
self.DB是连接上的数据库
tableModel是PyQt5预定义的数据模型,用来作为数据库中一个数据库表的数据模型。
PyQt5使用Model/View结构来处理界面与数据。 Model从源数据提取需要的数据,用于视图组件进行显示和编辑
插入红框中的代码
运行后可以看到表头信息出来了
列太宽了,很难看。加多这条语句
输出结果好看多了
也可以这么写
当前tableview里面选择某个行,右侧是无反应的
同时import若干新模块
插入
发现右边groupbox出现第一条数据。无论左边tableview点哪个单元格,右边的groupbox都不跟着变化
换个地方点击
按住Ctrl键,在多条记录上选择,发现可以选多行
在__init__函数中限制
当前这个下拉框里面是没东西的,运行的时候点没反应
import新模块
添加红色框框内代码。注意要在前面写上@pyqtSlot(int),说明其参数为int类型
换一种排序方式
升序
降序
原因是这些按钮在数据库没打开时不应该能按。排序相关功能也有类似的错误
将groupBoxSort的enabled属性里面的勾去掉
同样,将groupBoxFilter的相关属性也去掉
保存,退出qt
在Eric6工程目录下运行批处理文件或者将form文件拷贝到Eric6工程目录,然后在Eric6下编译form(因为改动没有涉及资源,所以直接在eric6下编译form就行了)
现在数据库没打开时,排序和过滤相应按钮都没法按了
在opentable函数的最后加入如下代码
打开数据库以后,排序和过滤按钮能用了
打开数据库后,打开按钮不应该还能用,不能多次重复打开数据库。而添加、插入、删除、涨工资、保存、修改等按钮应该变成有效状态,可以让人点击才对
数据库打开后,添加、插入、删除、涨工资相关按钮能按了。保存和取消按钮现在还不能按,改了数据后才能按。
按涨工资键前
按涨工资键后
都涨了10%
数据全改了
点完后,界面变成了这样
为什么没删掉,没有submit
点删除后,发现这两个按钮还是不能按
当前鼠标换别的数据行试试
在opentable函数这里,添加一行
补充槽函数
删除完之后,换别的单元格,发现保存和取消按钮可以用了。这是因为触发了do_currentChanged
先点取消按钮
点完后
到底删掉没有?点一下全显示按钮
数据回来了,取消删除成功 去数据库里面查一查,数据还在
删除华筝的记录后,点保存按钮
输出
去数据库里查一查
将黄蓉的工资改为200,出生日期改为4月29日,备注也改一下
点完后
按一下取消键,数据行变回原样
再改一次,这次按保存键
查询数据库,发现数据被改了
改一下黄蓉的性别和省份,按保存
数据库里查查,改掉了
在右边的groupbox里的数据修改没问题,在左边的tableview里面修改就有问题
弹出修改框,随便乱改,变成下面的样子
按保存,去数据库里面查,发现已经把性别改成了不合理的数据X
在右侧的groupbox里,由于限制了性别只能去男和女,所以显示不出来X 要解决这个问题,要对tableview里面数据的修改进行限制
tableview默认的单元格编辑组件是QlineEdit,对输入的数据无法限制。可以为某列设置自定义代理组件,比如QcommoBox。在上面的bug中,希望把性别的编辑组件改成QcommoBox,只能选择某些项(比如男和女),而不能随便输入。 新建文件myDelegates.py,创建一个
在opentable函数中插入红色框框中的代码
import模块
插入红色框框部分代码
查数据库,新记录出现了
查查数据库,新纪录出现。数据库语句没有排序字段,所以新纪录出现在最后
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有