第五天,用Qt设计完ui生成.py文件,创建main.py文件编写组件代码。

七、图形用户界面

使用PyUIC工具进行转换,ui生成.py文件。

创建主程序文件

import sys
import dialog  # 自己设计的界面文件from PyQt5.QtWidgets import *
from PyQt5.QtCore import *if __name__ == '__main__':"""程序入口"""# 创建一个应用程序对象app = QApplication(sys.argv)# 创建窗口对象Dialog = QDialog()# 根据界面文件来生成一个管理的对象ui = dialog.Ui_Dialog()# 初始化dialog.py中设计的组件对象ui.setupUi(Dialog)# 展示窗口Dialog.show()# 让主程序进入事件循环sys.exit(app.exec_())

增加一些点击效果

import sys
import dialogfrom PyQt5.QtWidgets import *
from PyQt5.QtCore import *def click_success():"""点击按钮后触发的函数"""print("点击了按钮")# 在UI上谈个小窗# 参数1:送一个组件对象# 参数2:小窗标题# 参数3:显示文字QMessageBox.information(ui.pushButton, "实训课程", "哈哈哈哈哈,终于触发了!")if __name__ == '__main__':"""程序入口"""app = QApplication(sys.argv)Dialog = QDialog()ui = dialog.Ui_Dialog()ui.setupUi(Dialog)# 后续所有的组件操作代码请放在此后# 信号槽:让组件设置触发效果# pushButton是组件对象的名称# click_success是触发函数的名称ui.pushButton.clicked.connect(click_success)Dialog.show()sys.exit(app.exec_())

获取用户输入代码

import sys
import dialogfrom PyQt5.QtWidgets import *
from PyQt5.QtCore import *def click_success():"""点击按钮后触发的函数"""print("点击了按钮")# 获取用户在单行文本输入框中的输入内容keyword = ui.lineEdit.text()# 如果不输入,提示输入if keyword == "":QMessageBox.information(ui.pushButton, "提示", "请输入要分析的关键字")return# 获取输入的数量count = ui.spinBox.value()# TODO 执行之前人脸数据分析代码,可能会出现假死问题print(keyword, count)if __name__ == '__main__':"""程序入口"""app = QApplication(sys.argv)Dialog = QDialog()ui = dialog.Ui_Dialog()ui.setupUi(Dialog)# 后续所有的组件操作代码请放在此后ui.pushButton.clicked.connect(click_success)Dialog.show()sys.exit(app.exec_())

完整代码

import sys
import dialog
import shutil  # 用于清空文件夹from PyQt5.QtWidgets import *
from PyQt5.QtCore import *from icrawler.builtin import BingImageCrawler
from aip import AipFace
import base64
import time  # 用于延迟操作
import os  # 用于文件操作
from pyecharts.charts import Bar
from pyecharts import options as opts
from pyecharts.globals import ThemeType  # 导入主题# 颜值统计
count_class_1 = 0
count_class_2 = 0
count_class_3 = 0
count_class_4 = 0
count_class_5 = 0
count_class_6 = 0
count_class_7 = 0
count_class_8 = 0
count_class_9 = 0
count_class_10 = 0
count_class_error = 0def clear_data():"""清空之前的统计数据:return:"""global count_class_1, count_class_2, count_class_3, count_class_4, count_class_5, count_class_6, count_class_7, \count_class_8, count_class_9, count_class_10, count_class_errorcount_class_1 = 0count_class_2 = 0count_class_3 = 0count_class_4 = 0count_class_5 = 0count_class_6 = 0count_class_7 = 0count_class_8 = 0count_class_9 = 0count_class_10 = 0count_class_error = 0def bing_image_crawler(keyword, max_num):"""基于bing搜索引擎爬取图片:param keyword: 关键字:param max_num: 数量"""# 删除之前bing文件夹,以保证连续可分析if os.path.exists('bing'):shutil.rmtree('bing')bing_crawler = BingImageCrawler(feeder_threads=2,parser_threads=4,downloader_threads=8,storage={'root_dir': 'bing'})filters = dict(size='medium')bing_crawler.crawl(keyword=keyword,filters=filters,max_num=max_num)""" 你的 APPID AK SK """
APP_ID = '16966840'
API_KEY = 'B0e6QoxUB0gwQxxzWT6fCgMU'
SECRET_KEY = 'rGQji0R0X76e4CP9rbcdPbcNRdS6EwC9'def img2base64(path):"""把图片文件转换为基于base64的字符串,以便用于网络传播:param path: 图片的路径:return: 转换后的结果"""file = open(path, 'rb')data = file.read()base = base64.b64encode(data)base = base.decode('utf-8')file.close()return basedef detect_face(img_path):"""人脸检测:param img_path: 人脸检测的图片路径:return: 百度服务器返回的人脸检测数据"""client = AipFace(APP_ID, API_KEY, SECRET_KEY)options = {"face_field": "age,beauty"}image = img2base64(img_path)return client.detect(image, "BASE64", options)def parse_data(data):"""解析服务器返回的数据,并提取颜值分数,根据颜值分数进行等级划分:param data: 服务器返回的原始结果数据:return: 颜值等级"""# 颜值半秒,控制QPStime.sleep(0.5)if data['error_code'] != 0:print("识别有问题", data)# 计数+1global count_class_errorcount_class_error += 1return -1  # 访问有问题beauty = data['result']['face_list'][0]['beauty']if beauty >= 90:# 计数+1global count_class_10count_class_10 += 1return 10elif beauty >= 85:# 计数+1global count_class_9count_class_9 += 1return 9elif beauty >= 75:# 计数+1global count_class_8count_class_8 += 1return 8elif beauty >= 65:# 计数+1global count_class_7count_class_7 += 1return 7elif beauty >= 55:# 计数+1global count_class_6count_class_6 += 1return 6elif beauty >= 45:# 计数+1global count_class_5count_class_5 += 1return 5elif beauty >= 35:# 计数+1global count_class_4count_class_4 += 1return 4elif beauty >= 25:# 计数+1global count_class_3count_class_3 += 1return 3elif beauty >= 15:# 计数+1global count_class_2count_class_2 += 1return 2elif beauty >= 5:# 计数+1global count_class_1count_class_1 += 1return 1else:# 计数+1count_class_error += 1return -1  # 未知情况def classify():"""【了解】本地磁盘中对各种颜值等级的图片进行分类:return:无"""root_dir = 'bing'# 列举所有目录下的文件和文件夹file_list = os.listdir(root_dir)# 遍历所有文件和文件夹for i in range(0, len(file_list)):# 拼装出文件路径path = root_dir + '/' + file_list[i]# 如果是文件if os.path.isfile(path):# 人脸识别获得其颜值等级beauty = parse_data(detect_face(path))# 按照颜值来创建文件夹,拼接出文件夹的路径dic = root_dir + '/' + str(beauty) + '/'# 如果识别有问题if beauty == -1:dic = 'bing/未识别/'# 如果文件夹不存在,就新建一个if not os.path.exists(dic):os.makedirs(dic)# 移动图片到等级文件夹中# 参数1:源文件的路径# 参数2:新文件的路径os.rename(path, dic + file_list[i])def draw_chart():bar = Bar(init_opts=opts.InitOpts(theme=ThemeType.CHALK))bar.add_xaxis(["未识别", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"])# 增加y轴bar.add_yaxis("", [count_class_error,count_class_1,count_class_2,count_class_3,count_class_4,count_class_5,count_class_6,count_class_7,count_class_8,count_class_9,count_class_10])bar.set_global_opts(title_opts=opts.TitleOpts(title="颜值统计图"))bar.render()def click_success():"""点击按钮后触发的函数"""print("点击了按钮")# 获取用户在单行文本输入框中的输入内容keyword = ui.lineEdit.text()if keyword == "":QMessageBox.information(ui.pushButton, "提示", "请输入要分析的关键字")returnmax_num = ui.spinBox.value()# TODO 执行之前人脸数据分析代码,可能会出现假死问题# 清空统计数据clear_data()# 爬取bing_image_crawler(keyword, max_num)print("人脸识别分类中......")# 分类(包括人脸识别和解析)classify()# 画图draw_chart()print("程序执行完成")if __name__ == '__main__':"""程序入口"""app = QApplication(sys.argv)Dialog = QDialog()ui = dialog.Ui_Dialog()ui.setupUi(Dialog)# 后续所有的组件操作代码请放在此后ui.pushButton.clicked.connect(click_success)Dialog.show()sys.exit(app.exec_())

图形界面

运行效果


点击开始即可获得图片、数据分析、及统计图(程序运行较慢)。

实训日记五 完善ui组件代码相关推荐

  1. 杰普实训日记 授课内容 第一天 讲师:李春雨

    杰普实训日记 授课内容 第一天 1.软件开发 1) Java开发 2) WebUI开发 2.作为一个合格软件工程需要的基本素质: 1. 熟悉linux操作系统 2. 能够使用终端的绝对不使用图形化界面 ...

  2. 实训第五天:播放器现目的实现

    实训第五天:播放器现目的实现 用的框架:jquery mobile 移动端 技术: 图标:九宫格 列表:jqm总共3个文件 引入css的样式文件,直接使用,用link标签 <link rel=& ...

  3. Bootstrap4+MySQL前后端综合实训-Day10-AM【实训汇报-下午返校、项目代码(7个包+7个Html页面)】

    [Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记][附:实训所有代码] 目录 实训汇报 数据库--所有SQL语句 工程文件展示 代码 ①package ...

  4. 阿赵的MaxScript学习笔记分享五《UI组件使用篇》

    大家好,我是阿赵.这个专题的内容比较多,所以抓紧时间更新.这是第五篇,UI组件使用篇. 这里主要是把maxscript的rollout窗体支持的UI组件列举一下,并每个组件写一个使用范例,以方便理解和 ...

  5. 7-30java实训日记

    Java实训第十一天所学所感 7-30日Java实训感受 springboot框架新闻系统前台实现流程 springboot框架新闻系统前台实现效果 springboot小组项目登录 7-30日Jav ...

  6. 东软睿道实训日记—第六天

    新的一周开始啦,可是生活的节奏呢还是那么的一样儿一样儿的.在东软实训每天怎么就没有一点新鲜的事情发生呢.Oracle老师总会提起他的英年往事,好像有多么多么的厉害似的,不过看起来作为一IT精英还是很骄 ...

  7. 东软睿道实训日记——第十一天

    今天是第三周开始了,我们一共要在东软睿道实训4个月的时间,第三周已经算是半个月的末尾了,转眼间我们在这里要度过了半个月了.我们在这半个月的时间里,既收获了知识,也收获了欢乐! 经过两天的休息,我们的精 ...

  8. 东软睿道实训日记—第一天

    入园第一天,很兴奋,心想着自己也是半个企业人了.沈阳东软A园环境幽静宜人,真是大企业有大家风范,给员工营造的工作环境就很大气.但是我们的是东软实训楼就略显陈旧单调了.不过还是很有学习氛围的,每个学生都 ...

  9. 实训日记(四)——ssm框架搭建

    实习第四天 上午老师简单复习了一下ssm框架,然后开始带我们一步一步实践.老师带我们学完了查询,后面的增删改需要我们自己编写.下午我们就在这自己编写增删改. 目录 ssm框架 增删查改实践 一.ssm ...

最新文章

  1. sqlsever无法重新启动计算机,安装SQL server 提示重新启动计算机失败怎么处理
  2. terminate和quit导致串口资源被占用
  3. SwiftUI 3.0调用SDWebImageSwiftUI 第三方框架
  4. 基于Docker搭建GitLab代码管理
  5. 设置窗口的光标,设置ToolBar,设置状态栏
  6. windows和linux系统下测试端口连通性的命令
  7. SQLLoader1(简单测试,以控制文件方式导入数据)
  8. thunderx 循环获得_湖北专业生产CY310热循环风机厂商
  9. Learn OpenGL(三)——顶点着色器(Vertext Shader)
  10. MemSQL分布式架构介绍(二)
  11. Magento的主题Shaeng为网上时装店,配件商店,鞋专卖店创造
  12. 工商企业大数据爬虫系统
  13. 微信收款播报器提示服务器断开,微信收款语音提醒开启后收不到语音提醒怎么办? 专家详解...
  14. 80坐标系(3度带)转经纬度
  15. ico 图标 生成 工具 网站
  16. java instrument_JAVA Instrument技术实战以及在QTrace中的应用
  17. 朱丹老师课程学习笔记:8、职场晋升-没人带怎么办?这样搜资料的小白也能变大神
  18. 搜索引擎(2020.09.11)
  19. 25 网站应用攻击与防御
  20. BUU-MISC-你能看懂音符码

热门文章

  1. SmartNovel——自动帮你写文章
  2. 01 微架构教务系统——概览
  3. Android Ripple的详解
  4. Niushop 开源电商系统
  5. 如何使用工业级AP—Client模式使用介绍
  6. 如何将 Outlook PST 文件内容导入 Gmail
  7. 工控产品之固态硬盘和普通硬盘的区别
  8. 邮箱每日发送上限小知识,告诉你各大邮箱每天最高发信数量
  9. CROC 2016 - Elimination Round (Rated Unofficial Edition) B. Mischievous Mess Makers 贪心
  10. 播放失败246106异常代码_燃气壁挂炉故障代码,这个必须得收藏了!