上篇已经做好了查询出入库单的功能,那么查询的数据要从哪里来呢?这一篇就来做一下出/入库单录入。

一.录入界面规划

还是使用查询功能中使用过的控件QTableWidget,然后底下放置三个按钮,新增、删除、保存。(关于编辑功能暂时不做,这个需要获取更改的单元格信号,当QTableWidget中的一个部件(item)内容更改完毕的时候,会释放itemChanged信号

二.上代码

1.定义表格,设置行表头(默认先给一行

        self.table = QTableWidget(self)self.table.move(20, 20)self.table.setColumnCount(5)self.table.setFixedHeight(300)self.table.setFixedWidth(500)self.table.setSelectionBehavior(QAbstractItemView.SelectRows)  # 设置表格的选取方式是行选取self.table.setSelectionMode(QAbstractItemView.SingleSelection)  # 设置选取方式为单个选取self.table.setHorizontalHeaderLabels(["产品名称", "产品规格", "入库时间","入库数量","摘要"])  # 设置行表头self.table.verticalHeader().setVisible(False)  # 隐藏列表头#设置行数self.table.setRowCount(1)

2.从字典中获取产品名称列

comBox = QComboBox()
comBox.setStyleSheet('QComboBox{margin:3px}')
result = datapg.query("select goods_name from erp.goods")  # 从台账类别中查询数据
        y = len(result)for i in range(0,y):  # 遍历查询结果comBox.addItems(result[i])self.table.setCellWidget(0,0,comBox)

3.设置时间列的控件为QDateTimeEdit

        dateEdit2 = QDateTimeEdit(QDateTime.currentDateTime(), self)dateEdit2.setDisplayFormat('yyyy-MM-dd')self.table.setCellWidget(0,2,dateEdit2)

4.新增按钮

        self.insert_button = QPushButton(self)self.insert_button.move(430, 350)self.insert_button.setFixedWidth(100)self.insert_button.setFixedHeight(32)#self.insert_button.clicked.connect(self.table_insert)self.insert_button.setText("新增")self.insert_button.clicked.connect(self.onButtonClick)

5.保存按钮

        self.save_button = QPushButton(self)self.save_button.move(330, 350)self.save_button.setFixedWidth(100)self.save_button.setFixedHeight(32)self.save_button.setText("保存")self.save_button.clicked.connect(self.table_insert)

6.删除按钮

        self.delete_button = QPushButton(self)self.delete_button.move(230, 350)self.delete_button.setFixedWidth(100)self.delete_button.setFixedHeight(32)self.delete_button.clicked.connect(self.table_delete)self.delete_button.setText("删除")

7.按钮点击事件

新增按钮点击事件

    def onButtonClick(self):sender = self.sender()rownum = self.table.rowCount()self.table.insertRow(rownum)self.table.setItem(rownum, 4, QTableWidgetItem("无"))self.table.setItem(rownum, 1, QTableWidgetItem("500ml"))print(rownum)#设置全局变量groups = [0]*100groups2 = [0] * 100groups[rownum]= QComboBox()groups[rownum].setStyleSheet('QComboBox{margin:3px}')groups2[rownum] = QDateTimeEdit(QDateTime.currentDateTime(), self)groups2[rownum].setDisplayFormat('yyyy-MM-dd')result = datapg.query("select goods_name from erp.goods")y = len(result)for i in range(0, y):  # 遍历查询结果groups[rownum].addItems(result[i])self.table.setCellWidget(rownum, 0, groups[rownum])self.table.setCellWidget(rownum, 2, groups2[rownum])self.table.viewport().update()

保存按钮点击事件

    def table_insert(self):rows = self.table.rowCount()  # 获取当前的行数colomn = self.table.columnCount()  # 获取当前的列数for i in range(rows):goods_name=self.table.cellWidget(i, 0).currentText()goods_unit=self.table.item(i, 1).text()in_time=self.table.cellWidget(i, 2).text()in_count=self.table.item(i, 3).text()note = self.table.item(i, 4).text()print(goods_name+goods_unit+in_time+in_count+note)sql= "INSERT INTO erp.in_store (goods_name,goods_unit,in_time,in_count,note) VALUES ('" + goods_name + "','" + goods_unit + "','" + in_time + "','" + in_count + "','" + note + "')"print(sql)datapg.exec("INSERT INTO erp.in_store (goods_name,goods_unit,in_time,in_count,note) VALUES ('" + goods_name + "','" + goods_unit + "','" + in_time + "','" + in_count + "','" + note + "')")print('插入成功')QMessageBox.about(self, "", "保存成功")# QMessageBox.question(self, " ", "是否提交?", QMessageBox.Yes | QMessageBox.No)# if result == QMessageBox.Yes:

删除按钮点击事件

    def table_delete(self):#删除选中行#默认删除最后一行row_count = self.table.rowCount()self.table.removeRow(row_count - 1)

8.效果展示

出库单与入库单代码可以复用,只需要改下列表头以及SQL语句就行了

使用 PyQT5 来做一个简易版库存管理系统(三)相关推荐

  1. python发音机器人_只需三步,菜鸟也能用Python做一个简易版Siri

    原标题:只需三步,菜鸟也能用Python做一个简易版Siri 当下,各个手机厂商都陆续的推出了属于自己的智能手机机器人,像是苹果的Siri,小米的小爱,还有等等.这些智能机器人不仅仅方便了我们对于手机 ...

  2. 【Linux】用进程控制知识做一个简易版shell

    文章目录 什么是shell 图示 分析 代码 什么是shell shell是命令行解释器的统称 当前使用的shell的名字是bash,bash其实也是一个程序 当前我使用的是centos7下实现一个简 ...

  3. js计算器代码加减乘除_如何用jQuery做一个简易版计算器

    经过几个小时地敲敲打打,终于把这一部分的代码完成了. 这类问题的难点不在于布局,而是如何恰当地使用jQuery达成计算.交互的目的,比如储存.显示数值,数据类型的转换等. 在听老师讲课之前的我,思路是 ...

  4. 实现用java做一个简易版《羊了个羊》小游戏(附源代码)

    该项目是跟着这个b站视频一步一步写出来的,初学java有些地方我看不是很明白,但是讲解很仔细,大家可以看原视频,我没有添加背景音乐和背景图片,做出来的效果也勉勉强强. 代码已经上传到github上了, ...

  5. 如何用Python做一个简易学生信息管理系统

    一.系统简介 实现一个学生信息的管理系统:主要功能有: 添加学生信息 删除学生信息 修改学生信息 查询学生信息 显示学生信息 退出当前系统 二.步骤分析 显示功能界面 用户输入功能序号 对不同序号的功 ...

  6. 用JAVA 做一个简易版的坦克大战(只实现基本功能)

    不太会写文章,只是为了记录自己做过的东西 文章目录 前言 一.大概思路 二.主要代码 1.Tank.java 2.Shot.java 3. Mypanel.java 4.Hero.java 5.Ene ...

  7. [Java]用面向对象的知识来做一个简易版植物大战僵尸

    package java07;//先设置植物的基础属性 public class Zhiwu {String name;int hp;int attack;//构造方法public Zhiwu(Str ...

  8. 做一个简易计算器(VB版)

    今天小编来带大家用VB做一个简易计算器 废话不多说,下面就是具体步骤了 1.创建控件组的方法首先创建一个命令按钮,调整其大小(觉得合适就行),名称为Command1,Caption 属性为数字 0 : ...

  9. 一个简易版的新闻应用(同时兼容手机和平板)

    代码可能有点长,需要耐心看几遍.前前后后我看了5遍才把整个流程吃透,相信你一定比我聪明!!! 新建一个FragmentBestPractice项目 (让ADT帮我们自动创建活动--活动名:MainAc ...

最新文章

  1. Linux下如何使用虚拟用户增加FTP的安全性
  2. 无限极评论回复插件_如何一键修复上色破损的旧照片?老照片有救了,用这个魔法插件...
  3. 包邮送50本畅销书,涵盖Python、数据库、机器学习等!
  4. mysql grant usage on_grant 权限 on 数据库对象 to 用户
  5. Regular Exprassion--正则表达式基础
  6. Linux5观察doc目录并截屏,linux截屏命令
  7. java二维数组模拟用户登录_Java 语言基础编程题 (二维数组, 五子棋游戏, 实体类和接口)...
  8. android bugly 错误分析,使用 Robolectric 单元测试运行时 bugly 初始化异常
  9. Java中的hashCode和equals的解析
  10. linux c 库依赖
  11. Vscode下中文乱码问题
  12. Linux操作系统实践
  13. python基础入门
  14. [实战] Android 发短信 - SMS
  15. GitHub基本操作
  16. Arduino学习笔记——数字输入
  17. 【上海交大oj】畅畅的牙签袋(状态压缩dp)
  18. Oracle+Sql Server相关查询语句
  19. css的inherit属性
  20. Python数据分析与展示 第一章 Numpy库入门

热门文章

  1. 【OGG】经典架构在postgresql-14上的安装部署-1
  2. FineReader使用总结
  3. epub电子书如何用IOS苹果手机打开?
  4. 学会结构化思维,成为大牛唾手可得
  5. 计算机二级office公共基础知识思维导图-算法
  6. 从0到1学习CTF WEB
  7. android gridview分页显示,GridView使用自带分页功能时分页方式及样式PagerStyle
  8. 一些改变世界的编程高手
  9. java毕业设计游戏交易平台Mybatis+系统+数据库+调试部署
  10. [20071016]直接下載 Hinet myweb 空間內的檔案(SMG)