Linux小程序开发日记-5
哈喽,大家好,好久不见,咱今天,又开始我的小程序开发啦。
然后这几天呢,我开始记录开发这个小程序的视频啦,欢迎大家来康康。
视频链接
最后一篇博客地址:https://blog.youkuaiyun.com/Liuchengzhizhi/article/details/123692365
B站视频:https://www.bilibili.com/video/BV1rZ4y1B7t8?share_source=copy_web
源码:https://gitee.com/wx_b915676bb6/yolo-pyqt.git
记得上一次咱们可以将识别的数据显示在旁边的表格中,但是呢还有很多内容没有加上去。所以这一次,咱把这个GUI没有完善的内容咱把他们完善好
今天的任务:
- 将加载UI界面的,单独放在一个python文件内
- 对识别的内容,进行一个排序,能够统计标签的个数
- 对这些识别的标签,进行表格的匹配,显示价格
- 进行一个计价
第一步:重新优化UI代码
这里呢,我单独的将ui代码,放在了我的food_ui文件里面
代码如下:
# @Author: Cjuicy
# @Date: 2022-03-21 16:07:16
# @Last Modified by: Cjuicys
# # @Last Modified time: 2022-03-21 16:07:16 */
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class Ui_MainWindow(object):
'''程序界面布局'''
def set_ui(self):
self.__layout_main = QtWidgets.QGridLayout() #总布局
self.__layout_fun_button1 = QtWidgets.QHBoxLayout() #按键布局1
self.__layout_fun_button2 = QtWidgets.QHBoxLayout() #按键布局2
self.__layout_data_show = QtWidgets.QVBoxLayout() #数据(视频)显示布局
self.__layout_list_show = QtWidgets.QVBoxLayout() #表格布局
self.button_confirm = QtWidgets.QPushButton('确认') #建立用于打开摄像头的按键
self.button_settle_accounts = QtWidgets.QPushButton('结账') #建立结账的按钮
self.list_show = QtWidgets.QTableWidget(6,3) #建立表格
self.label_account = QtWidgets.QLabel("总价:") #建立label
'''set butten size '''
self.button_confirm.setMinimumHeight(50) #设置按键大小
self.button_settle_accounts.setMinimumHeight(50)
self.label_account.setMinimumHeight(50)
# self.button_close.move(10,100) #移动按键 这句话去掉好像也没关系
'''设置标签的格式'''
font = QtGui.QFont()
font.setPixelSize(18)
self.label_account.setFont(font)
'''设置表格'''
self.list_show.setHorizontalHeaderLabels(["名称","数量","单价"])
self.list_show.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)# adaptive size
self.list_show.setEditTriggers(QAbstractItemView.EditTrigger(False)) #将表格的内容设为不可编辑
'''信息显示'''
self.label_show_camera = QtWidgets.QLabel() #定义显示视频的Label
self.label_show_camera.setFixedSize(641,481) #给显示视频的Label设置大小为641x481
'''把按键加入到按键布局中'''
self.__layout_fun_button1.addWidget(self.button_confirm) #把重新确认的按键放到按键布局中
# self.__layout_fun_button1.addWidget(self.button_close) #把退出程序的按键放到按键布局中
self.__layout_fun_button2.addWidget(self.button_settle_accounts) #把结账的按键放到按键布局中
'''把表格加入到表格布局中'''
self.__layout_list_show.addWidget(self.list_show) #将表格添加到表格布局中
self.__layout_list_show.addWidget(self.label_account) #将总价label添加到表格布局中
'''把某些控件加入到总布局中'''
self.__layout_main.addLayout(self.__layout_list_show,0,0) #将表格布局添加到总布局中
self.__layout_main.addLayout(self.__layout_fun_button1,1,1) #把按键布局加入到总布局中
self.__layout_main.addLayout(self.__layout_fun_button2,1,0) #把按键布局加入到总布局中
self.__layout_main.addWidget(self.label_show_camera,0,1) #把用于显示视频的Label加入到总布局中
# '''总布局布置好后就可以把总布局作为参数传入下面函数'''
# self.setLayout(self.__layout_main) #到这步才会显示所有控件
# 返回所有的页面布局
return self.__layout_main
第二步 读取csv文件
我把他放在了price_utils.py里面
代码如下
#
# @Author: Cjuicy
# @Date: 2022-03-21 20:25:16
# @Last Modified by: Cjuicys
# @Last Modified time: 2022-03-21 20:25:16
#
'''
存放价钱的读函数
'''
import csv
from pip import main
# 读取csv文件获得价钱信息
def get_price_info():
price_info = {
}
with open('priceInfo.csv', 'r') as csvfile: # 此目录即是当前项目根目录
spamreader = csv.reader(csvfile)
# 逐行遍历csv文件,按照字典存储用户名与密码
for row in spamreader:
price_info[row[0]] = row[1]
return price_info
第三步 修改我的主文件
修改主文件,将我想要的内容显示在表格上,同时进行一个乘法计算
主文件:
关键代码如下
#这是初始化函数里面的
self.ui = Ui_MainWindow()
self.price_info = price_utils.get_price_info() # 初始化 获取表格价钱信息(应为量少,可以这么做,安全等其他因素,应该走数据库)
layout_main = self.ui.set_ui() #初始化页面布局,并获取所有的页面布局
#这里是处理标签的函数,并将它显示在GUI 表格上
def set_labels(self ,labels )