GUI编程--PyQt5--QDiaglog

news2025/7/4 20:04:32

文章目录

  • QDialog
  • QFontDialog
  • QColorDialog
  • QFileDialog
  • QInputDialog

QDialog

  1. 对话框基类,继承QWidget;
  2. 用于短期任务,分为模态、非模态
    模态,阻塞在当前窗口;分为应用程序级别&窗口级别(仅阻塞关联的窗口);如文件选择。
    非模态,不阻塞;如查找

应用程序级别的模态

# 实例化对话框
dialog = QDialog()
# 应用程序级别(模态阻塞),只有当前窗口处理完,才可以继续往下走
dialog.exec()

窗口的模态,只阻塞相关的窗口

# 实例化对话框
dialog = QDialog(self)
dialog.setWindowTitle("窗口模态")
# 窗口级别(模态阻塞),只阻塞相关联的窗口
dialog.open()

# 非模态(非阻塞)
# 转为模态 
# dialog.setModal(True)
dialog.setWindowModality(Qt.WindowModality.WindowModal)
dialog.show()

在这里插入图片描述

在这里插入图片描述

# 右下角尺寸调整
dialog.setSizeGripEnabled(True)

# 接收
dialog.accept()  # 返回1  如打开
dialog.reject()  # 0   如取消
dialog.done(6)   # 完成  返回6
dialog.setResult(2)  # 设置结果
dialog.result()   # 获取结果

# 信号
dialog.accepted.   # dialog.accept() 后发送信号
dialog.rejected.   # dialog.reject() 后发送信号
dialog.finished.   # 接收、拒绝后都会发送完成信号

QFontDialog

选择字体对话框

# 实例化
fd = QFontDialog(win)

fd2 = QFontDialog(QFont, win) # 传入一个默认字体

# 当前字体(选择时的字体)
fd.setCurrentFont(QFont)
fd.currentFont()
# 选择后的字体
fd.selectedFont()

选择字体:

def set_ui(self):
	# 实例化对话框
	dialog = QFontDialog(self)
	dialog.setWindowTitle("选择字体")
	#
	btn = QPushButton("选择字体", self)
	btn.adjustSize()
	btn.move(100, 100)
	
	def func():
	    # 窗口选择后的字体QFont
	    print("选择的字体:", dialog.selectedFont().family())
	
	# 窗口模态,传入槽函数
	btn.clicked.connect(lambda : dialog.open(func))

# fd.exec()    确定返回1  取消返回0

# fd.show()   # 非模态  用于实时的展示

选项设置

fd.setOption(QFontDialog.FontDialogOption.NoButtons)
fd.setOptions(xxx | xxx)
fd.testOption(xxx)  # 测试是否生效

在这里插入图片描述
静态方法,getFont(self)
在这里插入图片描述

def func():
    # 窗口选择后的字体QFont
    # print("选择的字体:", dialog.selectedFont().family())
    font, label = QFontDialog.getFont(self)  # self 为父控件
    # font 返回的QFont对象,不管点击的 确定、还是取消,均返回字体对象
    # label  bool值   点击”确定“ 则返回True,否则返回False
    if label:
        # 点击“确定”
        print("选择了字体:", font)

# 窗口模态,传入槽函数
# btn.clicked.connect(lambda : dialog.open(func))
btn.clicked.connect(func)

 
 

QColorDialog

选择颜色对话框
如下,设置主窗口的背景色:
在这里插入图片描述

def set_ui(self):
    # 实例化对话框
    dialog = QColorDialog(self)
    dialog.setWindowTitle("选择颜色")
    # dialog.setOption(QColorDialog.ColorDialogOption.ShowAlphaChannel)
    #
    btn = QPushButton("选择颜色", self)
    btn.adjustSize()
    btn.move(100, 100)

    def func(color):  # 传入选择的颜色
        # 窗口选择后的颜色QColor
        print("选择的颜色:", color)
        palette = QPalette()
        palette.setColor(QPalette.Background, color)
        # 父窗口设置背景色
        self.setPalette(palette)

    # 窗口模态,传入槽函数
    # btn.clicked.connect(lambda : dialog.open(func))
    btn.clicked.connect(lambda : dialog.show())
    # 颜色被选择后
    dialog.colorSelected.connect(func)

其他操作:

colorDialog.setOption()
colorDialog.setOptions()
colorDialog.setCurrentColor()
colorDialog.currentColor()
# 信号与槽
colorDialog.currentColorChanged.connect(func)
colorDialog.colorSelected.connect(func)

静态方法:

# 自定义颜色个数
cd.customCount()

# 设置用户自定义颜色,必须在QColorDialog实例化前
QColorDialog.setCustomColor(idx, QColor)
# 设置标准颜色
QColorDialog.setStandardColor(idx, QColor)

# 静态方法选择颜色
color = QColorDialog.getColor(QColor, self, "颜色标题")

 
 

QFileDialog

选择文件对话框
控件实例化

def set_ui(self):
    # 实例化对话框
    dialog = QFileDialog(self)
    # 设置窗口标题
    dialog.setWindowTitle("选择文件")
    # 设置默认打开的目录
    dialog.setDirectory("D:/tempSoft/laufing")
    # 设置目录过滤器
    dialog.setFilter(QDir.Filter.AllDirs)
    # 设置文件名 过滤器
    dialog.setNameFilter("All(*.*);;Image(*.png *.jpg);;Python文件(*.py)")
    # dialog.setNameFilters(["All(*.*)", "Image(*.png *.jpg)",])
	
	# 设置accept模式  是“保存”按钮 还是 “打开”按钮
	dialog.setAcceptMode(QFileDialog.AcceptMode.AcceptSave)
	# 保存文件时的后缀扩展名
	dialog.setDefaultSuffix(".txt")
	
	# 设置选择的文件模式(文件、目录)
	dialog.setFileMode(QFileDialog.FileMode.AnyFile)
	# QFileDialog.FileMode.AnyFile
    # QFileDialog.FileMode.ExistingFile
    # QFileDialog.FileMode.Directory
    
    # 显示的详细情况
    dialog.setViewMode()

	# 改变窗口的文本字样
	dialog.setLabelText(QFileDialog.DialogLabel.FileName, "laufing")
	dialog.setLabelText(QFileDialog.DialogLabel.Accept, "receive")
	dialog.setLabelText(QFileDialog.DialogLabel.Reject, "reject")
	
    #dialog.setOption(QFileDialog.FileMode.AnyFile)
    #
    btn = QPushButton("选择文件", self)
    btn.adjustSize()
    btn.move(100, 100)

    def func(file):  # 传入选择的文件
        # 窗口选择后的文件绝对路径
        print("选择的文件:", file)  # file 文件的绝对路径


    # 窗口模态,传入槽函数
    btn.clicked.connect(lambda : dialog.show())
    # 文件选择后
    dialog.fileSelected.connect(func)

 
 
静态方法
在这里插入图片描述

# 静态方法使用格式
file_abs_path, filter_str = QFileDialog.getOpenFileName(父控件, "windowTitle", "打开目录", "过滤器All(*.*);;Images(*.png *.jpg);;Python文件(*.py)", "默认的过滤器")

# 使用静态方法 获取选择的文件
def set_ui(self):
    btn = QPushButton("选择文件", self)
    btn.adjustSize()
    btn.move(100, 100)

    def func():  #
        # 窗口选择后的文件 (实例化也可以按照这种传参)
        abs_file, filter_str = QFileDialog.getOpenFileName(self, "选择文件", "D:/",
                                                           "All(*.*);;Image(*.png *.jpg);;Python文件(*.py)",
                                                           "Image(*.png *.jpg)")
        print("选择的文件:", abs_file)
        print("默认的过滤器:", filter_str)


    # 信号与槽
    btn.pressed.connect(func)

在这里插入图片描述
其他的静态方法使用大致相同。
获取保存的文件名后,就可以写入内容。

获取目录:

 # 选择目录
 def func():  #
    # 窗口选择后的目录
    abs_path = QFileDialog.getExistingDirectory(self, "选择目录", "D:/")
    print("选择的目录:", abs_path)


# 选择目录url
abs_path_url = QFileDialog.getExistingDirectoryUrl(self, "选择目录", QUrl("D:/"))

信号
在这里插入图片描述

 
 

QInputDialog

输入内容对话框

静态方法获取内容

# 整数值
result = QInputDialog.getInt(self, "大标题", "小标题", default, min, max, step)
# 小数值
result = QInputDialog.getDouble(self, "大标题", "小标题", default, decimals=3)
# 文本
result = QInputDialog.getText(self, "大标题", "小标题", echo=QLineEdit.EchoMode.Password)
# 多行文本
result = QInputDialog.getMultiLineText(self, "大标题", "小标题", default)
# 列表项
result = QInputDialog.getItem(self, "大标题", "小标题", ["a", "b", "c"], default_idx)

在这里插入图片描述

# 小数
def func():  #
    # 窗口选择后的文件
    value = QInputDialog.getDouble(self, "大标题", "小标题", 10.2, min=0.0, max=100.0, decimals=1)
    print("选择的文件:", value)

# 列表项
def func():  #
           # 窗口选择后的文件
           value = QInputDialog.getItem(self, "大标题", "小标题", ["a", "b", "c"], 2)
           print("选择的文件:", value)

 
实例化

# 实例化
input_dialog = QInputDialog(self, Qt.WindowType.FramelessWindowHint)
# 设置选项
input_dialog.setOption()
# 设置文本
input_dialog.setLabelText("输入信息")
input_dialog.setOkButtonText("确定")
input_dialog.setCancleButtonText("取消")
#  输入模式
input_dialog.setInputMode(QInputDialog.InputMode.DoubleInput)
input_dialog.setDoubleRange(0.0, 10.0)
input_dialog.setDoubleStep(2.5) # 步长
input_dialog.setDoubleDecimals(2)  # 小数位数

在这里插入图片描述
在这里插入图片描述

信号
在这里插入图片描述

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

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

相关文章

关于使用鼠标时间mouseMove拖拽元素及元素抖动的解决方案

最近在做一个画布相关的项目时有一个场景是移动画布,最先开始想到的是拖拽事件,但是用户希望元素是实时的变化,所以决定使用mouseMove事件来做。 思路 通过mouseDown事件确定鼠标按下的位置根据mouseMove事件来计算出鼠标相对初始状态的横向…

MySQL锁杂谈

【说明】 1.MySQL版本5.7.37 2.事务隔离级别 REPEATABLE-READ 3.表结构 Create Table: CREATE TABLE isolation_innodb (id bigint(20) NOT NULL AUTO_INCREMENT,name varchar(10) DEFAULT NULL,money int(11) DEFAULT NULL,PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT4…

jsp库存管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 库存管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开 发,数据库为Mysql,使用ja…

VMware Cloud Director数据库操作

VMware Cloud Director 是一个云服务平台,以自助服务模式提供安全、隔离、弹性的虚拟数据中心计算、网络、存储和安全。在NFV整个架构中属于VIM层,与NFVI层(对VMware来说即vSphere虚拟化环境)对接获取虚拟化资源并提供给租户。 NF…

服务访问质量(QoS)——QoS技术概述与配置

作者简介:一名在校云计算网络运维学生、每天分享网络运维的学习经验、和学习笔记。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.QoS技术概述 1.QoS的应用需求 ①网络拥塞的影响&#xff1a…

【Linux】项目自动化构建工具:make/Makefile的使用

文章目录一、背景1、make和makefile是什么?2、为什么要使用make和makefile?二、原理1、使用make和makefile2、依赖关系和依赖方法3、具体原理4、项目清理一、背景 1、make和makefile是什么? make是一个命令,是一个解释makefile中指令的命令…

Linux项目:自主web服务器

文章目录项目描述Web与 http 发展史DNSURI URL URNHTTP 概述项目纲要项目架构套接字的封装HTTP服务启动日志信息与工具类请求、响应类读取请求读取请求行读取请求报头分析请求行分析请求报头读取正文构建响应预处理返回静态网页CGI机制CGI机制的基本概念CGI函数的实现子CGI程序…

【点云处理】点云法向量估计及其加速(4)

上篇文章【点云处理】点云法向量估计及其加速(3)介绍了如何使用pcl提供的gpu版本法向量计算接口对点云发向量计算进行加速。不足之处在于点云k近邻查找依然比较耗时,成为影响整体计算性能的瓶颈。这篇文章就如何优化点云K近邻查找效率进行实验。上一篇文章的示例代码…

redis数据库的下载安装/免安装版

文章目录下载方式一下载方式二免安装版redis是一款高性能的NOSQL系列的非关系型数据库这里分享三个下载源,只介绍免安装版下载方式一 官网下下载https://redis.io(国外网站下载速度比较慢) 下载方式二 Redis中文网http://www.redis.net.cn…

想你所想,华为云桌面Workspace助你轻松办公

想你所想,华为云桌面Workspace助你轻松办公 双11作为近年来最受关注的购物季,从最开始的电商,到现在各行各业纷纷下场推出活动,期望在此段时间内迅速积累用户,从而提升产品知名度和用户基础。华为云也不例外&#xff0…

学生个人博客网页设计作品 学生个人网页模板 个人网页制作 HTML学生个人网站作业设计

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

应用商店的ASO和搜索引擎的SEO的区别

ASO和SEO,目标相似,有着异曲同工之妙,两者都是提高搜索排名的方式,具体有什么区别呢?今天柚鸥ASO给大家做一下总结。 SEO是指搜索引擎优化,利用搜索引擎的规则来提高网站(例如:百度…

室内定位解决方案-最新全套文件

室内定位解决方案-最新全套文件一、建设背景二、建设思路三、建设方案四、获取 - 室内定位全套最新解决方案合集一、建设背景 室内定位顾名思义就是定位室内目标对象的位置,可以是人也可以是物体的位置的一种技术方案,根据定位精度的不同,被…

C++ Primer Plus第五版笔记(p1-50)

1 在unix中 echo 获得状态 2iostream 包含istream以及ostream:随着时间的推移&#xff0c;字符是按照顺序生成或者是消耗的 3cin标准输入 cout标准输出 Cerr标准错误 clog 一般性信息 4cin>>c1>>c2&#xff1b;连续输入 5cout是ostream的对象&#xff0c;第一个<…

VirtualBox安装openEuler

下载&#xff1a; https://www.openeuler.org/zh/mirror/list/ 根据设备架构选择对应的版本&#xff1a;windows是x86架构 选择下面这个4.2G大小的&#xff1a; 安装&#xff1a; 1&#xff0c;点击新建&#xff1a; 按下图设置 设置内存大小&#xff0c;使用的cpu数…

SpringBoot项目在使用Maven打包war中遇到的问题

问题描述 在使用maven打包&#xff08;package&#xff09;springboot项目为war项目后&#xff0c;在本地机器上使用Tomcat跑这个项目&#xff0c;访问资源时出现下面的错误&#xff1a; o.s.b.w.servlet.support.ErrorPageFilter : Cannot forward to error page for reque…

TIKTOK出海公会为什么是2022出海风口?有哪些机遇与挑战?

近两年在全球迅速扩张市场的TIKTOK一举跃为全球下载量第一的APP&#xff0c;背靠十几亿月活用户的流量矿山&#xff0c;成为首个非Facebook系达成此成就的应用&#xff0c;可谓是赚足了全世界的目光。与此同时&#xff0c;大量跨境商家与自媒体从业者也盯上了TIKTOK的造富潜力&…

zlib-1.2.11库、libpng-1.6.36库编译及交叉编译 —— 附带shell编译脚本及源码

目录 一、zlib-1.2.11库编译 二、libpng-1.6.36库编译 三、编译zlib和libpng的编译脚本 编译libpng库之前需要先下载编译zlib库&#xff0c;因为libpng需要依赖zlib才能编译通过。 编译环境如下&#xff1a;ubunt 14.04、gcc 4.8.4、arm-hisiv100nptl-linux-gcc 一、zlib-1.2…

SAP S4客户与供应商如何管理 事务代码 BP

在 S4里里面&#xff0c; “客户”与“供应商”的概念被整合为为“业务伙伴”了 &#xff0c;所以SAP也用也新的事务代码来管理“业务伙伴” 新的业务代码是BP 。 在旧版本的SAP里面采用供应商和客户的方式来管理业务伙伴&#xff0c;有一些弊端&#xff0c;例如&#xff1a; 1…

[附源码]java毕业设计源冀平行进口车系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…