Python桌面开发pyqt5—QDialog及子类

本文详细介绍了PyQt5中的QDialog、QMessageBox、QInputDialog、QErrorMessage、QProgressDialog、QFileDialog、QColorDialog、QFontDialog和QCalendarWidget的使用方法,包括模态与非模态对话框、设置内容、自定义按钮、文本交互以及日期选择等功能。

QDialog模态

d = QDialog()
d.setWindowTitle('对话框')
d.resize(300, 180)

'''弹出对话框的3种方法'''
d.exec()					# 模态对话框,只有把Dialog窗口干掉才能和window主窗口交互
#d.open()					# 非模态对话框,Dialog和window窗口可以同时互动
#d.show()					# 非模态对话框,Dialog和window窗口可以同时互动

# 取消模态
d.setModal(False)					

QMessageBox

设置不同模态的对话框

mb = QMessageBox(self)  # 默认就是open(0:窗口级别模态 对话框
mb.setModal(False)  # 取消模态
mb.exec()  # 设置为应用程序级别模态窗口

设置内容

# 构造函数
# mb = QMessageBox(QMessageBox.Warning,'窗口标题','<h2>消息</h2>',QMessageBox.Discard | QMessageBox.Ok,self)
mb = QMessageBox(self)

# 设置标题
mb.setWindowTitle('窗口标题')  # 设置对话框标题

# 设置文本模式
mb.setTextFormat(Qt.PlainText)  # 默认为Qt.AutoText(自动识别)

# 设置主提示
mb.setText('这是主提示')  # 设置主提示。可接受html代码
# 设置副提示
mb.setInformativeText('这是副提示')
# 设置详情信息
mb.setDetailedText('<h1>这是详情信息</h1>')

# 设置标准图标
mb.setIcon(QMessageBox.Information)
# 设置自定义图标
# mb.setIconPixmap(QPixmap('./resources/cat.jpg').scaled(1000,800))	#设置主提示

# 设置'勾选框'
mb.setCheckBox(QCheckBox('记住我', mb))  # 不支持html代码

mb.open()

在这里插入图片描述

自定义按钮

mb = QMessageBox(QMessageBox.Warning, '窗口标题', '<h2>消息</h2>',QMessageBox.Discard | QMessageBox.Ok, self)
# 设置标准按钮
# mb.setStandardButtons(QMessageBox.Yes | QMessageBox.No)
# 添加自定义按钮
mb.addButton(QPushButton('自定义yes',mb),QMessageBox.YesRole)
btn = mb.addButton('自定义no',QMessageBox.NoRole)
# 移除按钮
# mb.removeButton(btn)
# 设置默认选择的按钮
mb.setDefaultButton(btn)
# 绑定特殊按钮
mb.setEscapeButton(btn)		# 绑定Escape键
mb.open()

在这里插入图片描述

文本可复制

mb = QMessageBox(QMessageBox.Warning, '窗口标题', '<h2>消息</h2>', QMessageBox.Yes | QMessageBox.No, self)
# 设置交互权限。注意,仅对主副提示文本起作用(详情信息不起作用)
mb.setTextInteractionFlags(Qt.TextEditorInteraction)  # 可以交互(选中复制粘贴...)
mb.open()

在这里插入图片描述

内存地址对比

mb = QMessageBox(QMessageBox.Warning, '窗口标题', '<h2>消息</h2>', QMessageBox.Discard | QMessageBox.Ok, self)
mb.setStandardButtons(QMessageBox.Yes | QMessageBox.No)

def func(btn):
    # 内存地址对比
	yes_btn = mb.button(QMessageBox.Yes)
	no_btn = mb.button(QMessageBox.No)
    print('点击了YES' if btn == yes_btn else '点击了NO')
    # 角色对比
    role = mb.buttonRole(btn)
    print('点击了YES' if role == QMessageBox.YesRole else '点击了NO')

mb.buttonClicked.connect(func)
mb.open()

系统封装

PyQt5封装好的对话框

# QMessageBox.about(self, '标题', '提示')
# QMessageBox.aboutQt(self,'标题')
res = QMessageBox.question(self,'标题','提示',QMessageBox.Yes | QMessageBox.No,QMessageBox.No)
print(res)		# 这是一个堵塞式弹出

在这里插入图片描述

QInputDialog对话框

输入框种类

  • QInputDialog.getInt(self, '标题', '提示内容', 100, step=5)
  • QInputDialog.getDouble(self, '标题', '提示内容', 100.3, decimals=3)
  • QInputDialog.getText(self, '标题', '提示内容', echo=QLineEdit.Password)
  • QInputDialog.getMultiLineText(self, '标题', '提示内容', '默认值')
  • QInputDialog.getItem(self, '标题', '提示内容', ['wwe1', '1', '2', '3'], 2, True)

在这里插入图片描述

显示模式

# 设置对话框样式
i_d = QInputDialog(self,Qt.FramelessWindowHint)			# 无边框
# 设置展示方式
i_d.setOption(QInputDialog.UseListViewForComboBoxItems)	# 在一个多行文本框展示
# 设置枚举值
i_d.setComboBoxItems(['沙漠皇帝', '影流之主', '暮光之眼'])    # 增加3个条目
i_d.show()

在这里插入图片描述

输入模式

i_d = QInputDialog(self)

# 改变界面控
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值