基于深度学习的视觉检测小项目(七) 开始组态界面
开始设计和组态画面。
• 关于背景和配色
在组态画面之前,先要确定好画面的风格和色系。如果有前端经验和美术功底,可以建立自己的配色体系。像我这种工科男,就只能从网络上下载一些别人做好的优秀界面,然后在photo shop中抠取色号作为界面的颜色库。必须注意的一点,做工程不是搞艺术,千万不要过多加入私人的和个性的元素,比如把图标和背景搞成自己喜欢的动漫人物之类的,因为这样极大概率会引起客户的反感,认为作者轻视项目和审美自私,对客户缺乏应有的尊重。
配色的一些基础知识文章推荐:UI设计界面配色指南,以及UI设计色彩应用规范
• 画面组件的伸展特性
作为一个软件界面,它的另一个必备特性是对显示屏幕分辨率的自动适配能力,我们不太可能让客户只能使用与我们的编程电脑相同分辨率的显示器。一般来讲,界面软件会对显示屏幕有一个最低分辨率的要求,只要显示屏幕高于最低分辨率都应该能够自动适配并正常显示。这样,界面上的有些区域就要具备自动缩放的属性,比如图片显示区。另外一些区域,比如按钮站,它的大小是固定的,不随屏幕分辨率和界面尺寸变化而变化。
下面来完善一下项目的文件框架,并开始组态。
一、在designer中新建QWidget画面,命名为form1.ui,保存在项目的/uis目录下。在画面上放置一个QLabel,一个QPuchButton,分别命名为label_1和btn_1。

二、使用pyuic工具将form1.ui文件转为form1.py文件。并且新建了一些目录和文件,当前的目录结构如下:

functions目录:存放功能函数
ui_project.py:项目级别的一个脚本,所有的对于ui项目而言的全局信号和变量都在这个脚本内定义。
form1.ui:在designer中布局和设计的界面文件。可以理解为界面的图形文件。
form1.py:由form1.ui经uis工具转换而来的py文件。可以理解为界面的前端文件。
form1_func.py:在form1.py基础上增加了功能和信号的py文件。可以理解为界面的后端和功能文件。
main.py:主函数。
uis目录下的__init__.py文件,这个文件的代码如下:
__all__ = ["form1_func"] # 用于控制哪些模块被导出
这行代码控制了当在别的地方使用“from uis import *”调用uis这个包时,哪些模块被导入,哪些模块不被导入。
三、各个脚本的代码:
1、form1_func.py:
from PySide6.QtCore import Slot
from PySide6.QtWidgets import QWidgetfrom . import form1 # 导入使用uis工具从form1.ui生成而来的form1.py文件
from functions.ui_project import uiproj # 导入全局的ui项目对象# 定义窗口类
class Form1(QWidget, form1.Ui_Form):def __init__(self):super().__init__()self.setupUi(self) # 加载窗口self.run() # 初始化运行窗口def run(self): # 窗口的运行函数self.show() # 显示窗口@Slot()def date_show(t): # 显示日期的槽函数self.label_1.setText(t) # 设置label_1的文本uiproj.date_signal.connect(date_show) # 连接日期信号@Slot()def on_btn_1_clicked(): # 按钮1点击事件连接的槽函数self.label_1.setText("local clicked") # 设置label_1的文本self.btn_1.clicked.connect(on_btn_1_clicked) # 按钮1点击事件连接槽函数
2、ui_project.py:
# 这里定义项目级别的信号和变量、参数等
import timefrom PySide6.QtCore import Signal, QObject, QTimer# 定义全局的ui项目类
class UiProj(QObject):# 定义全局信号date_signal = Signal(str) # 全局的日期信号def __init__(self):super(UiProj, self).__init__()self.time_str = "" # 全局的日期变量self.timer = QTimer() # 定义全局定时器 @Slot()# 刷新日期def refresh_time(self):self.time_str = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) # 刷新日期变量self.date_signal.emit(self.time_str) # 发送信号uiproj = UiProj() # 生成全局的ui项目对象
3 、main.py:
import sysfrom PySide6.QtCore import Signal, QObject
from PySide6.QtWidgets import QApplication
from gui.uis import * # 导入所有窗口类from functions.ui_project import uiprojdef main():app = QApplication(sys.argv)form1 = form1_func.Form1() # 实例化窗口类uiproj.timer.start(1000) # 启动全局定时器uiproj.timer.timeout.connect(uiproj.refresh_time) # 连接定时器的超时信号sys.exit(app.exec())if __name__ == "__main__":main()
以上代码演示了如何使用一个全局的信号和变量来跨窗口操作部件,以及同窗口内局部的信号和槽的连接。凡是用uiproj.开头的信号和变量等,都是全局的。凡是self.开头的都是局部的。
运行截图:

相关文章:
基于深度学习的视觉检测小项目(七) 开始组态界面
开始设计和组态画面。 • 关于背景和配色 在组态画面之前,先要确定好画面的风格和色系。如果有前端经验和美术功底,可以建立自己的配色体系。像我这种工科男,就只能从网络上下载一些别人做好的优秀界面,然后在photo shop中抠取色…...
AI赋能跨境电商:魔珐科技3D数字人破解出海痛点
跨境出海进入狂飙时代,AI应用正在深度渗透并重塑着跨境电商产业链的每一个环节,迎来了发展的高光时刻。生成式AI时代的大幕拉开,AI工具快速迭代,为跨境电商行业的突破与飞跃带来了无限可能性。 由于跨境电商业务自身特性鲜明&…...
【C/C++】nlohmann::json从文件读取json,并进行解析打印,实例DEMO
使用 json::parse 函数将JSON格式的字符串解析为 nlohmann::json 对象。这个函数支持多种输入源,包括字符串、文件流等。 #include <iostream> #include <nlohmann/json.hpp> #include <fstream>using json nlohmann::json;int main() {// 解析…...
安装Anaconda搭建Python环境,并使用VSCode作为IDE运行Python脚本
下面详细说明如何安装Anaconda搭建Python环境,并使用VSCode作为编辑器运行Python脚本的过程: 1. 下载Anaconda 访问Anaconda的官方网站:https://www.anaconda.com/products/distribution 3. 根据您的操作系统选择适合的版本下载。Anaconda支…...
我用AI学Android Jetpack Compose之入门篇(1)
这篇我们先来跑通第一个Android Jetpack Compose工程,现在新版本的Android Studio,新建工程选择Empty Activity默认就会开启Jetpack Compose的支持,再次声明,答案来自 通义千问Ai 文章目录 1.用Android Jetpack Compose需要安装什…...
使用 Docker 查看 Elasticsearch 错误日志
在使用 Elasticsearch(简称 ES)的过程中,我们可能会遇到各种问题。为了快速定位和解决这些问题,查看错误日志是关键。本文将介绍如何使用 Docker 查看 Elasticsearch 的错误日志,并提供一些实用技巧。 1. 安装 Docker…...
使用Apache Mahout制作 推荐引擎
目录 创建工程 基本概念 关键概念 基于用户与基于项目的分析 计算相似度的方法 协同过滤 基于内容的过滤 混合方法 创建一个推荐引擎 图书评分数据集 加载数据 从文件加载数据 从数据库加载数据 内存数据库 协同过滤 基于用户的过滤 基于项目的过滤 添加自定…...
Elasticsearch:利用 AutoOps 检测长时间运行的搜索查询
作者:来自 Elastic Valentin Crettaz 了解 AutoOps 如何帮助你调查困扰集群的长期搜索查询以提高搜索性能。 AutoOps 于 11 月初在 Elastic Cloud Hosted 上发布,它通过性能建议、资源利用率和成本洞察、实时问题检测和解决路径显著简化了集群管理。 Au…...
python二元表达式 三元表达式
目录 二元表达式必须要有else,示例: 二元表达式: 三元表达式 可以嵌套成多元表达式 python 代码中,有时写 if else比较占行,把代码变一行的方法就是二元表达式, 二元表达式必须要有else,示例: if img is None:breakcv2.imwrite("aaa.jpg", img) if coun…...
计算机网络 (22)网际协议IP
一、IP协议的基本定义 IP协议是Internet Protocol的缩写,即因特网协议。它是TCP/IP协议簇中最核心的协议,负责在网络中传送数据包,并提供寻址和路由功能。IP协议为每个连接在因特网上的主机(或路由器)分配一个唯一的IP…...
【UI自动化测试】selenium八种定位方式
🏡个人主页:謬熙,欢迎各位大佬到访❤️❤️❤️~ 👲个人简介:本人编程小白,正在学习互联网求职知识…… 如果您觉得本文对您有帮助的话,记得点赞👍、收藏⭐️、评论💬&am…...
REMARK-LLM:用于生成大型语言模型的稳健且高效的水印框架
REMARK-LLM:用于生成大型语言模型的稳健且高效的水印框架 前言 提出这一模型的初衷为了应对大量计算资源和数据集出现伴随的知识产权问题。使用LLM合成类似人类的内容容易受到恶意利用,包括垃圾邮件和抄袭。 ChatGPT等大语言模型LLM的开发取得的进展标志着人机对话交互的范式…...
Android SPRD 工模测试修改
设备有两颗led灯,工模测试需全亮 vendor/sprd/proprietories-source/factorytest/testitem/led.cpp -13,6 13,10 typedef enum{#define LED_BLUE "/sys/class/leds/blue/brightness"#define LED_RED …...
H3C CN3360B光纤存储交换机配置案例
这几天在项目里面遇到了一台光纤存储交换机,需要划Zone来实现服务器外接存储 接下来我就分享我在项目中的配置 我是通过交换机串口进去的,也可以通过网口,串口的配置我就不介绍了 网口配置的地址是:10.77.77.77/24 登入方式&…...
问题:Flask应用中的用户会话(Session)管理失效
我来分享一个常见的PythonWeb开发问题: 问题:Flask应用中的用户会话(Session)管理失效 这是一个在Flask开发中经常遇到的问题。当用户登录后,有时会话会意外失效,导致用户需要重复登录。 解决方案: 1. 首先&#x…...
Backend - C# 操作数据库 DB(ADO.NET、LINQ to SQL、EF)
目录 一、ADO.NET(传统) 二、LINQ to SQL(已过时) 三、EF(推荐) 常见的操作数据库的方法:有三种,分别是 ADO.NET、LINQ to SQL、EF 一、ADO.NET(传统) ADO.NE…...
JMeter + Grafana +InfluxDB性能监控 (二)
您可以通过JMeter、Grafana 和 InfluxDB来搭建一个炫酷的基于JMeter测试数据的性能测试监控平台。 下面,笔者详细介绍具体的搭建过程。 安装并配置InfluxDB 您可以从清华大学开源软件镜像站等获得InfluxDB的RPM包,这里笔者下载的是influxdb-1.8.0.x86_…...
springCloud实战
一、Feign的实战 1、使用 1.1步骤 ①引入feign依赖 ②在启动类上加上EnableFeignClients注解,开启Feign客户端 ③编写FeignClient接口 1.2开启feign调用日志 只需在yml配置文件中开启配置即可 feign:client:default:loggerLevel: FULL #feign接口被调用时的…...
从优化算法到分布式训练-提升AI模型收敛速度的系统性分析【附核心实战代码】
本文收录于专栏:精通AI实战千例专栏合集 https://blog.csdn.net/weixin_52908342/category_11863492.html从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 每一个案例都附带关键代码,详细讲解供大家学习,希望可以帮…...
如何在 Windows 10/11 上录制带有音频的屏幕 [3 种简单方法]
无论您是在上在线课程还是参加在线会议,您都可能需要在 Windows 10/11 上录制带有音频的屏幕。互联网上提供了多种可选方法。在这里,本博客收集了 3 种最简单的方法来指导您如何在 Windows 10/11 上使用音频进行屏幕录制。请继续阅读以探索! …...
CSS如何优化CSS加载性能_通过代码分割与压缩减少体积
关键不是压缩CSS体积,而是让浏览器尽快获取首屏所需CSS;需用media属性条件加载、动态导入非首屏样式、避免import、合理分割CSS、删除冗余选择器、谨慎内联并控制体积在2KB内。怎么让CSS不阻塞页面渲染关键不是“压缩体积”,而是让浏览器尽快…...
如何使用Apache Shiro实现企业级密码安全:完整配置指南
如何使用Apache Shiro实现企业级密码安全:完整配置指南 【免费下载链接】shiro Apache Shiro is a powerful and easy-to-use Java security framework that performs authentication, authorization, cryptography, and session management 项目地址: https://gi…...
小白也能玩转语音识别:Qwen3-ASR-0.6B镜像部署全攻略
小白也能玩转语音识别:Qwen3-ASR-0.6B镜像部署全攻略 1. 为什么选择Qwen3-ASR-0.6B 语音识别技术正在改变我们与设备交互的方式。想象一下,你可以把会议录音自动转成文字,把语音备忘录变成可搜索的文档,甚至让家里的智能设备听懂…...
顶级同传并非天赋堆砌,而是一套可复制、高强度、科学化的训练体系。全球顶尖院校及机构(如欧盟口译司、巴黎高翻、联合国译训部)均采用标准化训练逻辑,核心围绕听辨、分脑、短时记忆、语言转换、抗压输出五大能力
顶级同传并非天赋堆砌,而是一套可复制、高强度、科学化的训练体系。全球顶尖院校及机构(如欧盟口译司、巴黎高翻、联合国译训部)均采用标准化训练逻辑,核心围绕听辨、分脑、短时记忆、语言转换、抗压输出五大能力闭环,…...
IDM激活脚本终极指南:一键实现永久免费使用的完整教程
IDM激活脚本终极指南:一键实现永久免费使用的完整教程 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script 想要免费使用Internet Download Manager&#…...
Vue3+@antv/x6实战:5步实现可交互流程图保存与图片导出功能
Vue3与antv/x6深度整合:打造企业级可交互流程图解决方案 在数字化转型浪潮中,可视化流程编排工具已成为企业级应用的标准配置。作为前端开发领域的黄金组合,Vue3的响应式体系与antv/x6的图编辑能力相结合,能够快速构建出功能完备的…...
宝塔面板开机自启踩坑记:从手动重启到Systemd自动化,我总结了这几点经验
宝塔面板开机自启踩坑记:从手动重启到Systemd自动化实战指南 作为一名独立开发者,我永远忘不了那个凌晨三点被客户电话吵醒的夜晚——服务器意外重启后,宝塔面板没有自动恢复运行,导致所有网站服务瘫痪。这次惨痛经历让我下定决心…...
AudioSeal保姆级教程:从ffmpeg预处理到CUDA加速检测完整步骤
AudioSeal保姆级教程:从ffmpeg预处理到CUDA加速检测完整步骤 1. 项目概述 AudioSeal是Meta公司开源的一款专业级音频水印系统,专门用于AI生成音频的检测和溯源。这个工具就像给音频文件装上了一个"数字身份证",无论音频被如何编辑…...
二分查找力扣题(leetcode)味
一、语言特性:Java 26 与模式匹配进化 1.1 Java 26 语言级别支持 IDEA 2026.1 EAP 最引人注目的变化之一,就是新增 Java 26 语言级别支持。这意味着开发者可以提前体验和测试即将在 JDK 26 中正式发布的语言特性。 其中最重要的变化是对 JEP 530 的全面支…...
Nebula Console深度探索:解决图数据库交互效率瓶颈的技术实践
Nebula Console深度探索:解决图数据库交互效率瓶颈的技术实践 【免费下载链接】nebula-console Command line interface for the Nebula Graph service 项目地址: https://gitcode.com/gh_mirrors/ne/nebula-console 你是一个文章写手,你负责为开…...
