通过这个布局思路来做一个简单的后台管理系统也是ok的,大家可以参考一下啦!
话不多说,还是先来梳理一下需要的第三方模块。
pyq5 的ui界面布局部分,同样是还是使用这三个模块就够了。
from pyqt5.qtgui import *from pyqt5.qtwidgets import *from pyqt5.qtcore import *
将sys模块导入到代码块中,用于main函数里面的主体循环时使用。
import sys
add_dialog是一个自己写的添加数据的弹框。
from add_dialog import adddialog
创建好datamanage类,主要用来实现主窗口页面的ui布局。
class datamanage(qwidget): def __init__(lf): super(datamanage, lf).__init__() lf.data_list = [] lf.init_ui() def init_ui(lf): '''全局设置''' lf.twindowicon(qicon('数据.ico')) lf.twindowtitle('数据管理器') lf.resize(550, 400) grid = qgridlayout() '''菜单设置''' lf.add_btn = qpushbutton() lf.add_btn.ttext('添加数据') lf.add_btn.clicked.connect(lf.add_btn_click) lf.del_btn = qpushbutton() lf.del_btn.ttext('删除数据') lf.del_btn.clicked.connect(lf.del_data_row) lf.query_btn = qpushbutton() lf.query_btn.ttext('查询') lf.query_btn.clicked.connect(lf.query_data_list) '''数据列表设置''' lf.data_table = qtablewidget() column = 5 row = 0 lf.data_table.tcolumncount(column) lf.data_table.羽毛球视频trowcount(row) h_table_header = ['序号', '姓名', '年龄', '班级', '表现'] lf.data_table.thorizontalheaderlabels(h_table_header) lf.data_table.verticalheader().tvisible(fal) lf.data_table.tshowgrid(true) lf.data_table.tedittriggers(qtablewidget.noedittriggers) lf.data_table.tlectionbehavior(qtablewidget.lectrows) lf.data_table.tlectionmode(qtablewidget.singlelection) for index in range(lf.data_table.columncount()): headitem = lf.data_table.horizontalheaderitem(index) headitem.ttextalignment(qt.alignvcenter) '''加入布局''' grid.addwidget(lf.add_btn, 0, 0, 1, 1) grid.addwidget(lf.del_btn, 0, 1, 1, 1) grid.addwidget(lf.query_btn, 0, 2, 1, 1) grid.addwidget(lf.data_table, 1, 0, 1, 3) lf.tlayout(grid)
定义需要的槽函数,通过不同按钮的信号绑定相应的槽函数从而来实现该按钮需要绑定的事件来实现业务逻辑。
# 将新增数据的按钮绑定到该槽函数 def add_btn_click(lf): ''' 打开新增数据的弹框模块 :return: ''' adddialog.get_add_dialog(lf) # 将查询数据的按钮绑定到该槽函数 def query_data_list(lf): ''' 查询数据、并将数据展示到主窗口的数据列表中 :return: ''' data = lf.data_list if len(data) != 0 and len(data[0]) != 0: lf.data_table.trowcount(len(data)) lf.data_table.tcolumncount(len(data[0])) for i in range(len(data)): for j in range(len(data[0])): lf.data_table.titem(i, j, qtablewidgetitem(str(data[i][j]))) # 将删除数据按钮绑定到该槽函数 def del_data_row(lf): ''' 删除某一行的数据信息 :return: ''' row_lect = lf.data_table.lecteditems() print(row_lect) if len(row_lect) != 0: row = row_lect[0].row() print(row) lf.data_table.removerow(row) del lf.data_list[row] print(lf.data_table)
通过 main() 函数来启动整个应用程序。
if __name__ == '__main__': app = qapplication(sys.argv) main = datamanage() main.show() sys.exit(app.exec_())
最后,将新增数据时自定义的弹框模块的代码分享一下。这个模块就是为了自定弹框单独写的一个模块,通过在主窗口直接调用该模块实现的弹框函数就能实现一个弹框的功能。
创建一个 add_dialog.py 的文件,将下面的代码块放到里面即可。
from pyqt5.qtwidgets import *class adddialog(qdialog): def __init__(lf, parent=none): super(adddialog, lf).__init__(parent) lf.init_ui(parent) def init_ui(lf,parent): '''水平布局''' hbox = qhboxlayout() lf.save_btn = qpushbutton() lf.save_btn.ttext('保存') lf.save_btn.clicked.connect(lambda :lf.save_btn_click(parent)) lf.cancel_btn = qpushbutton() lf.cancel_btn.ttext('取消') lf.cancel_btn.clicked.connect(lf.cancel_btn_click) 长春家教 hbox.addwidget(lf.save_btn) hbox.addwidget(lf.cancel_btn) '''表单布局''' fbox = qformlayout() lf.q_lab = qlabel() lf.q_lab.ttext('序号:') lf.q_text = qlineedit() lf.q_text.tplaceholdertext('请输入序号') lf.name_lab = qlabel() lf.name_lab.ttext('姓名:') lf.name_text = qlineedit() lf.name_text.tplaceholdertext('请输入姓名') lf.age_lab = qlabel() lf.age_lab.ttext('年龄:') lf.age_text = q北师大版五年级上册数学教学计划lineedit() lf.age_text.tplaceholdertext('请输入年龄') lf.class_lab = qlabel() lf.class_lab.ttext('班级:') lf.class_text = qlineedit() lf.class_text.tplaceholdertext('请输入班级') lf.socre_lab = qlabel() lf.socre_lab.ttext('表现:') lf.socre_tex一般通过t = qlineedit() lf.socre_text.tplaceholdertext('请输入表现') fbox.addrow(lf.q_lab,lf.q_text) fbox.addrow(lf.name_lab, lf.name_text) fbox.addrow(lf.age_lab, lf.age_text) fbox.addrow(lf.class_lab, lf.class_text) fbox.addrow(lf.socre_lab, lf.socre_text) vbox = qvboxlayout() vbox.addlayout(fbox) vbox.addlayout(hbox) lf.tlayout(vbox) def save_btn_click(lf,parent): if lf.q_text.text().strip() != '' and lf.name_text.text().strip() != '' \ and lf.age_text.text().strip() != ''and lf.class_text.text().strip() != '' \ and lf.socre_text.text().strip() != '' : print(parent.data_list) data = [lf.q_text.text(), lf.name_text.text(), lf.age_text.text(), lf.class_text.text(), 1948年属什么 lf.socre_text.text()] parent.data_list.append(data) print(parent.data_list) parent.query_data_list() lf.clo() def cancel_btn_click(lf): lf.clo() @staticmethod def get_add_dialog(parent=none): dialog = adddialog(parent) return dialog.exec()
以上就是实现一个数据管理器需要的主要代码块了
到此这篇关于pyqt5实现数据的增删改查功能详解的文章就介绍到这了,更多相关pyqt5数据增删改查内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
本文发布于:2023-04-06 04:44:32,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/9026702a7747822f84b10683a10492bd.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:PyQt5实现数据的增删改查功能详解.doc
本文 PDF 下载地址:PyQt5实现数据的增删改查功能详解.pdf
留言与评论(共有 0 条评论) |