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

news2024/10/6 22:23:00

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*300
        self.lb = QLabel("Data Deep Learning",self)        # add a label to this dialog
        self.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.coloradmin.cn/o/1350351.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

上网行为管理系统丨上网行为管理一体化解决方案

随着互联网的普及和发展,企业的网络安全和员工的行为管理已经成为了一个重要的问题。为了解决这个问题,上网行为管理一体化解决方案应运而生。本文将深入探讨上网行为管理一体化解决方案的背景、概念、重要性、实现方式和未来发展等方面。 一、概念 上网…

守正出奇,穿越周期 - Bytebase 的 2023

前情提要:Bytebase 的 2022|埋头苦干,孕育希望 产品迭代 2023 年共发布了 25 个版本。这个数字和 2022 年一样,除开春节和一次全员疫情,做到了两周一次的更新。 版本号从 1.11.0 升级到了 2.13.0。其中在 5 月份&…

25W以下室内照明应用解决方案:SM2188EN符合新ERP认证标准

随着LED照明技术的不断发展,室内照明领域的需求也在不断增加。针对25W以下室内照明应用,LED驱动芯片SM2188EN是一款新型的解决方案,符合最新的ERP认证标准,能够满足用户对照明产品高效、节能、稳定的需求。 SM2188EN方案原理图 L…

TDD-LTE TAU流程

目录 1. TAU成功流程 1.1 空闲态TAU 1.2 连接态TAU 2. TAU失败流程 当UE进入一个小区,该小区所属TAI不在UE保存的TAI list内时,UE发起正常TAU流程,分为IDLE和CONNECTED(即切换时)下。如果TAU accept分配了一个新的…

web自动化(5)——关键字驱动

PO 模型会增加测试脚本的编写复杂度,尤其是当测试项目规模较大或者业务逻辑较为复杂时,需要编写大量的 Page Object 类,或者一旦我们的项目发生变动甚至更换项目时,就需要大量修改原来的代码,增加了项目的维护成本。关…

合并数组或对象的几种方法

1.两个数组对象合入一起 const cc [{id: 1,age: 80岁,name: 444,},{id: 1,age: 804岁,name: 2,},{id: 1,age: 803岁,name: 3,},{id: 1,age: 830岁,name: 33,},{id: 1,age: 1022220岁,name: 白龙马111111111,}, ] const reslutList [{id: 1,age: age,name: 唐曾,},{id: 1,age…

windows无命令升级降级node版本

1. node最新版本下载链接 点击最新下载链接,找到对应版本下载并解压 2. 通过命令where node找到node.exe位置 3. 将该位置的node.exe替换为下载解压的最新node.exe 4. 重新执行node -v查看版本 --------------------------------------------------------------…

论文解读:A New CNN Building Block for Low-ResolutionImages and Small Objects

引言 之前通过stride和pooling这些下采样操作,但是这些操作都会或多或少丢失图像的信息,所以这不适用于具有低分辨率图像和小物体的更困难的任务上。像池化选择maxpooling或者是averagepooling、卷积的步长(太大的话会丢失信息)都是很头疼的问题&#x…

QT登录功能开发

登录功能 1选择无按钮的dialog 2登录函数 #include <QApplication> #include <QDialog> #include <QFormLayout> #include <QLineEdit> #include <QPushButton> #include <QMessageBox>class LoginDialog : public QDialog { public:Log…

Axure软件大全:原型设计下载与学习指南!

Axure可以有效地创建原型&#xff0c;包括绘制APP和网页的原型图、框架图、结构图等。Axure内置的小部件可以用来构建动态交互。即使新手设计师不懂程序代码&#xff0c;也可以在Axure中创建复杂、动态、功能丰富的原型。对于想要深入研究和花时间学习程序的设计师来说&#xf…

LeetCode74二分搜索优化:二维矩阵中的高效查找策略

题目描述 力扣地址 给你一个满足下述两条属性的 m x n 整数矩阵&#xff1a; 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target &#xff0c;如果 target 在矩阵中&#xff0c;返回 true &#xff1b;否则&…

Android静态代码检查及自定义Lint实现

概述 在日常的项目开发迭代中&#xff0c;相信每个人对与代码质量都是有着高要求的。但是&#xff0c;在所有事情中&#xff0c;人往往就是其中最大的变量因素&#xff0c;个人各异&#xff0c;如何去保障代码质量以及统一规范呢&#xff1f;开发团队也许会严格要求Code-Review…

如何使用Node.js快速创建本地HTTP服务器并实现公网访问服务端

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

抖店新手该如何运营?

我是电商珠珠 在抖店开好之后&#xff0c;大部分新手都不知道怎么去运营&#xff0c;今天&#xff0c;我就来给大家详细的讲一下。 第一步&#xff0c;店铺基础设置 我一直跟我的学生讲&#xff0c;一定要懂基本流程&#xff0c;只有前期将流程跑通了后期才可以毫无压力。 …

css 保持元素宽高比 随页面宽度变化高度自适应

目录 1.效果展示 2.代码内容 3.代码解析 &#xff08;1&#xff09;分析inner类写法 &#xff08;2&#xff09;分析container类写法 1.效果展示 2.代码内容 <div class"item"><div class"inner"><di class"container">…

LED显示屏恒流驱动芯片的功能特点

LED显示屏恒流驱动芯片是一种电子器件&#xff0c;用于控制和驱动LED显示屏。由于LED显示屏通常由大量LED灯珠组成&#xff0c;因此需要使用恒流驱动芯片来确保每个LED灯珠都能够正常、均匀地发光&#xff0c;并且能够控制显示的色彩和亮度。 SM16380SF 恒流驱动芯片通常具有以…

Windows本地如何部署Apache服务器搭配内网穿透实现无公网IP远程访问?

文章目录 前言1.Apache服务安装配置1.1 进入官网下载安装包1.2 Apache服务配置 2.安装cpolar内网穿透2.1 注册cpolar账号2.2 下载cpolar客户端 3. 获取远程桌面公网地址3.1 登录cpolar web ui管理界面3.2 创建公网地址 4. 固定公网地址 前言 Apache作为全球使用较高的Web服务器…

RDS创建数据库

目录 创建数据库 创建账号与授权 连接RDS数据库 创建数据库 在创建数据库的页面&#xff0c;你需要设置数据库的名称、字符集、排序规则等信息。 字符集&#xff1a;字符集&#xff08;Character set&#xff09;是多个字符的集合&#xff0c;字符集种类较多&#xff0c;每个…

前缀和算法 -- [模版]二维前缀和

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 本题链接 【模板】二维前缀和_牛客题霸_牛客网 输入描述 n是行&#xff0c;m是列&#xff0c;q是查询次数&#xff0c;x1&#xff0c;y1&#xff0c;x2&#xff0c;y2是二维数组的下标。 输出描述 通过两对下标&#x…

nginx+keepalived实现七层负载

目录 一、部署nginx01、nginx02 二、keepalived配置&#xff08;抢占模式、master- backup模式&#xff09; 三、测试 四、非抢占模式&#xff08;backup-backup模式&#xff09; nginx01 11.0.1.31nginx0211.0.1.32虚拟IP&#xff08;VIP&#xff09;11.0.1.30 一、部署ngin…