8.1 QDialog对话框控件基类
一、QDialog对话框控件基类
1.基本概念
- 对话框控件主要用于短时间内的交互,分为模态和非模态两种类型,其中模态对话框有分为窗口级别和应用程序级别两种。
# 1用于短期任务或临时交互:
# 1.模态对话框:应用程序级别(exce(),需要关闭交互窗口之后才能操作其他窗口==模态)
# 2.模态对话框:窗口级别(open()仅阻塞关联窗口交互,不影响其他窗口的交互==模态)
# 3.非模态对话框:show()
# 模态(阻塞性);非模态(不阻塞)
# 2尺寸调整
qd.setSizeGripEnabled(True) # 控件右下角显示
# 3槽函数
# qd.accept() # 接受
# qd.reject() # 取消
# qd.done() # 替代其他功能
# 4设置和获取数值
# qd.setResult(int)
# qd.result()
# 5可用信号
# qd.accepted()
# qd.finished()
# qd.rejected()
2.代码
点击查看代码
from PyQt5.Qt import *
import sys
class Window(QWidget) :
def __init__(self) :
super().__init__()
self.setWindowTitle("QDialog对话框控件 - PyQt5中文网")
self.resize(600, 500)
self.func_list()
def func_list(self) :
self.func()
def func(self) :
# 四种对话框和一个日历控件
# QFontDialog
# QColorDialog
# QFileDialog
# QInputDialog
# QCalendarWidget
'''
# 用于短期任务或临时交互:
# 1.模态对话框:应用程序级别(exce(),需要关闭交互窗口之后才能操作其他窗口==模态)
# 2.模态对话框:窗口级别(open()仅阻塞关联窗口交互,不影响其他窗口的交互==模态)
# 3.非模态对话框:show()
# 模态(阻塞性);非模态(不阻塞)
'''
# 1模态演示
qd = QDialog(self)
#qd.exec()
#qd.open() # 不关联的时候就能拖动
#qd.setModal(True) # 将非模态设置为模态窗口
#qd.setWindowModality(Qt.ApplicationModal) # 设置为窗口级别Qt.WindowModal,设置成应用程序级别Qt.ApplicationModal 只能用exec()输出
#qd.show()
# 2尺寸调整
qd.setSizeGripEnabled(True) # 控件右下角显示
'''
# 3槽函数
# qd.accept() # 接受
# qd.reject() # 取消
# qd.done() # 替代其他功能
'''
btn1 = QPushButton(qd)
btn1.move(10, 10)
btn1.setText('按钮1')
btn1.clicked.connect(lambda : qd.accept()) # 接受,返回值为1
btn2 = QPushButton(qd)
btn2.move(60, 60)
btn2.setText('按钮2')
btn2.clicked.connect(lambda : qd.reject()) # 拒绝,返回值为0
btn3 = QPushButton(qd)
btn3.move(10, 100)
btn3.setText('按钮3')
btn3.clicked.connect(lambda : qd.done(5)) # 返回值为5
#print(qd.exec_())#输出上面三个信号的返回值
'''
# 4设置和获取数值
# qd.setResult(int)
# qd.result()
'''
# btn1 = QPushButton(qd)
# btn1.move(10, 100)
# btn1.setText('按钮1')
# btn1.clicked.connect(lambda: qd.setResult(111))
#
# btn2 = QPushButton(qd)
# btn2.move(60, 60)
# btn2.setText('按钮2')
# btn2.clicked.connect(lambda: print(qd.result()))
#
# print(qd.exec_())
'''
# 5可用信号
# qd.accepted()
# qd.finished()
# qd.rejected()
'''
qd.accepted.connect(lambda: print('接受'))
qd.rejected.connect(lambda: print('拒绝'))
qd.finished.connect(lambda val: print('结束', val))
qd.open() # 触发信号
if __name__ == '__main__' :
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
3.效果
分类:
可视化界面 / PYQT5
标签:
python可视化
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!