PyQt5-控件之QDialog(UI-业务分离搭建自定义xDialog)

1.继承QtWidgets.QWidget自定义对话框

继承于QtWidgets.QWidget自定义一个对话框类:SelectingDlg

class SelectingDlg(QtWidgets.QWidget):    def __init__(self):        super(SelectingDlg, self).__init__()        self.initUI()        def initUI(self):self.setWindowModality(Qt.ApplicationModal)self.setWindowTitle('建立条件选择集')self.resize(400, 300)   # set dialog size to 400*300self.lb = QLabel("Data Deep Learning",self)        # add a label to this dialogself.lb.setGeometry(QtCore.QRect(370, 240, 201, 51))   # set label position and size

注:
(1)通过self.setWindowModality(Qt.ApplicationModal)设置对话框的显示模式:

Qt.NonModal # 非模态:正常模式
Qt.WindowModal # 半模态:窗口级模态对话框,阻塞父窗口、父窗口的父窗口及兄弟窗口
Qt.ApplicationModal # 模态:应用程序级模态对话框,阻塞整个应用程序的所有窗口

存在的比较麻烦的问题:
(1)需要自己代码设置Dlg窗口的尺寸、确定左上角的坐标,可能用到的类有:QPoint、QSize,QRect以及QDesktopWidget
(2)需要自己代码设置Dlg窗口内控件与Dlg的相对位置

显示如下:在这里插入图片描述

2.继承QtWidgets.QDialog自定义对话框

表面上的差别:看右上角:没有了最大化、最小化按钮,多了个帮助按钮在这里插入图片描述

3.使用Qt Designer设计UI,实现业务-UI分离

(1)先用Qt Designer设计对话框大小与控件布局;
(2)参考“业务-UI分离”实现对话框UI与对应业务类代码分离。
(3)实践过程

1) 先用Qt Designer设计对话框大小与控件布局,保存:SelectingDlg.ui

2) 使用PYQT:Compile Form 自动生成:Ui_SelectingDlg.py

3) 声明类定义

class SelectingDlg(Ui_SelectingDlg,QDialog):#初始化本类def __init__(self):super(SelectingDlg,self).__init__()       self.setupUi(self)  # 传递自己

4) 响应菜单项triggered

@QtCore.pyqtSlot()   def on_actionSliceCuting_triggered(self): #响应选择菜单        self.dlg=SelectingDlg()self.dlg.show()   #如无该句,则对话框不会显示

5) 实践过程遇到的问题

类定义代码中如无:

self.setupUi(self) # 传递自己

程序也会运行,但打开的对话框是一个空对话框
在这里插入图片描述

需要多重继承:Ui_SelectingDlg和QDialog,否则出现,第一个碰到的错误提示:

AttributeError: ‘SelectingDlg’ object has no attribute ‘setObjectName’

多重继承:Ui_SelectingDlg和QDialog,代码顺序产生的问题

class SelectingDlg(Ui_SelectingDlg,QDialog):

建议:Ui_SelectingDlg在QDialog前面,否则VS写代码时,不会自动识别类对象(被识别的对象名,显示“蓝色”),给写代码造成困难

不小心多重继承了:Ui_SelectingDlg和QFileDialog,提示:

QLayout: Attempting to add QLayout “” to SelectingDlg “Dialog”, which already has a layout

该提示有点奇怪,既不是错误,也不是严重warning, 程序也未中断,显示出一个,既包含缺省的QFileDialog,也有Ui_SelectingDlg的布局:
在这里插入图片描述
正确的应该是:

在这里插入图片描述
注:提示“QLayout: Attempting to add QLayout “” to SelectingDlg “Dialog”, which already has a layout”好像产生的原因,其他网友也遇到,但产生的具体情形可能很多

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/321791.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WMS仓储管理系统如何优化急料处理流程

在当今快速发展的商业环境中,企业的运营效率和供应链管理面临着前所未有的挑战。尤其在面对急料处理这一环节时,许多企业都感到力不从心。为了满足生产线的连续运作、确保客户订单的及时交付,WMS仓储管理系统的急料处理流程优化成为了关键。本…

【Spark精讲】Spark on Hive性能优化

目录 第一章 1.1 集群配置概述 1.2 集群规划概述 第二章 Yarn配置 2.1 Yarn配置说明 yarn.nodemanager.resource.memory-mb yarn.nodemanager.resource.cpu-vcores yarn.scheduler.maximum-allocation-mb yarn.scheduler.minimum-allocation-mb 第三章 Spark的配置说…

UG装配-引用集

引用集是控制组件的图素在装配体中显示与隐藏 装配体体环境控制组件显示与隐藏的四种方式 1、图层 2、引用集 3、隐藏命令 Ctrl B 4、抑制,取消此组件装配,但保留操作在导航器方便启用 引用集有两种类型 1、UG自动创建的引用集 2、用户定义的引…

HarmonyOS页面和自定义组件生命周期

页面和自定义组件生命周期 在开始之前,我们先明确自定义组件和页面的关系: 自定义组件:Component装饰的UI单元,可以组合多个系统组件实现UI的复用。页面:即应用的UI页面。可以由一个或者多个自定义组件组成&#xff…

迟来的扫雷游戏

今天我们讲如何用C语言编写出一个简单扫雷,扫雷也算是一个比较原始的游戏了吧,那么我们今天就来实现他! 首先我们要来缕一缕游戏框架 我们在代码中我们肯定会写许多函数来实现扫雷,那么我们为了简便看出游戏的运行逻辑&#xff0…

大创项目推荐 深度学习卷积神经网络垃圾分类系统 - 深度学习 神经网络 图像识别 垃圾分类 算法 小程序

文章目录 0 简介1 背景意义2 数据集3 数据探索4 数据增广(数据集补充)5 垃圾图像分类5.1 迁移学习5.1.1 什么是迁移学习?5.1.2 为什么要迁移学习? 5.2 模型选择5.3 训练环境5.3.1 硬件配置5.3.2 软件配置 5.4 训练过程5.5 模型分类效果(PC端) 6 构建垃圾…

力扣刷题-二叉树-构建树

106.从中序与后序遍历序列构造二叉树 根据一棵树的中序遍历与后序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 中序遍历 inorder [9,3,15,20,7] 后序遍历 postorder [9,15,7,20,3] 返回如下的二叉树: 思路 参考:…

探秘Spring Bean的秘境:作用域篇【beans 三】

欢迎来到我的博客,代码的世界里,每一行都是一个故事 探秘Spring Bean的秘境:作用域篇【beans 三】 前言单例作用域如何声明单例Bean:特点: 原型作用域如何声明原型Bean:特点: 会话作用域如何声明…

多台西门子PLC对接Oracle数据库,实现PLC与数据库双向数据通讯

智能网关IGT-DSER方便实现多台PLC与数据库之间的数据通讯,既可以读取PLC的数据上报到数据库,也可以从数据库查询数据后写入到PLC的寄存器。 网关安装在设备侧,与设备同时起停,不担心数据丢失;在断网、服务器维护上报数…

vue-动态高亮效果

个人练习&#xff0c;仅供参考 实现如下效果&#xff1a;点击某块&#xff0c;某块变成其他颜色。 具体实现代码&#xff1a; 上边&#xff1a; <template><div><h3 style"color: #f69">动态高亮效果</h3><hr> <!-- 对象 -->…

CodeWave智能开发平台--03--目标:应用创建--01模板创建依赖问题修改

摘要 本文是网易数帆CodeWave智能开发平台系列的第03篇&#xff0c;主要介绍了基于CodeWave平台文档的新手入门进行学习&#xff0c;实现一个完整的应用&#xff0c;本文主要完成模板创建时的依赖问题解决。 CodeWave智能开发平台的03次接触 CodeWave参考资源 网易数帆Code…

算法训练营Day36(贪心-重叠区间)

都算是 重叠区间 问题&#xff0c;大家可以好好感受一下。 都属于那种看起来好复杂&#xff0c;但一看贪心解法&#xff0c;惊呼&#xff1a;这么巧妙&#xff01; 还是属于那种&#xff0c;做过了也就会了&#xff0c;没做过就很难想出来。 不过大家把如下三题做了之后&#…