QDialog----简介

1、QDialog简介:对话框:在主窗口中操作,有可能触发某一个行为动作,会弹出一个新的对话窗口,解决一个临时性的会话,在对话窗口中执行某一个功能。

对话框还可以展示错误信息、进度信息(属于展示空间)。

模态:阻塞式的当前的对话框处理完才能去处理其他事情。

非模态:不会阻塞与对话框关联的窗口以及与其他窗口进行交互。

 QDialogs可以提供返回值,他们都有默认按钮。继承于QWidget()。

 d = QDialog():四种展示方法的区别

        调用exec()方法他就变成应用程序级别的模态方法;open()变成窗口级别的模态方法;show()变成非模态对话框。

①应用程序级别的测试;只要这个窗口没有操作完成,其他窗口都无法操作。(QDialog窗口被隐藏在底下)

 ②窗口级别的模态:显示两个窗口。(只会阻塞与当前窗口有关联的窗口)

 ③非模态级别的:d.show()他们互不影响。

d.setModal(True)将他变为模态的对话窗口。

setWindowModality()改变窗口模态级别。

2、QDialog功能作用:

        是否显示尺寸调整控件:对话框的右下角显示一个小控件,小控件可以通过鼠标来拖拽改变窗口的尺寸。(可以改变大小效果)

                                

from PyQt5.Qt import *
import sys

app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("QDialog")
window.resize(500, 500)

# 永远是顶层窗口
d = QDialog(window)
btn1 = QPushButton(d)
btn1.setText("btn1")
btn1.move(20, 20)
btn1.clicked.connect(lambda: d.accept())

btn2 = QPushButton(d)
btn2.setText("btn2")
btn2.move(60, 60)
btn2.clicked.connect(lambda: d.reject())

btn3 = QPushButton(d)
btn3.setText("btn3")
btn3.move(60, 160)
btn3.clicked.connect(lambda: d.done(8))

d.setWindowTitle("对话框")
d.resize(300, 300)
d.setWindowModality(Qt.WindowModal)
d.setSizeGripEnabled(True)
#d.show()
# 应用程序级别的模态对话框
# 通过不同的数值判断用户做的怎样的操作
result = d.exec()
print(result)

window.show()
sys.exit(app.exec_())

设置和获取数值:直接操作整个对话框的结果:

 借助该方法给对话框设置最终的结果,也可以获得相关的结果,并且不关闭对话框也可以。

btn2 = QPushButton(d)
btn2.setText("btn2")
btn2.move(60, 60)
# btn2.clicked.connect(lambda: d.reject())
btn2.clicked.connect(lambda: print(d.result()))

btn3 = QPushButton(d)
btn3.setText("btn3")
btn3.move(60, 160)
# btn3.clicked.connect(lambda: d.done(8))
btn3.clicked.connect(lambda: d.setResult(888))
d.setWindowTitle("对话框")
d.resize(300, 300)
d.setWindowModality(Qt.WindowModal)
d.setSizeGripEnabled(True)
#d.show()
# 应用程序级别的模态对话框
# 通过不同的数值判断用户做的怎样的操作
result = d.exec()

3、信号:对应不同的槽函数:()accept对应接受操作所发射的信号,reject对应拒绝信号所发射的信号;不管以上那种信号,他最后都会发射完成信号。

from PyQt5.Qt import *
import sys

app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("QDialog")
window.resize(500, 500)

# 永远是顶层窗口
d = QDialog(window)
btn1 = QPushButton(d)
btn1.setText("btn1")
btn1.move(20, 20)
btn1.clicked.connect(lambda: d.accept())

btn2 = QPushButton(d)
btn2.setText("btn2")
btn2.move(60, 60)
btn2.clicked.connect(lambda: d.reject())
#btn2.clicked.connect(lambda: print(d.result()))

btn3 = QPushButton(d)
btn3.setText("btn3")
btn3.move(60, 160)
btn3.clicked.connect(lambda: d.done(8))
#btn3.clicked.connect(lambda: d.setResult(888))

d.accepted.connect(lambda: print("点击了,接受按钮"))
d.rejected.connect(lambda: print("点击了,拒绝按钮"))
d.accepted.connect(lambda val: print("点击了,完成按钮", val))

d.setWindowTitle("对话框")
d.resize(300, 300)
d.setWindowModality(Qt.WindowModal)
d.setSizeGripEnabled(True)
#d.show()
# 应用程序级别的模态对话框
# 通过不同的数值判断用户做的怎样的操作
result = d.exec()
print(result)

window.show()
sys.exit(app.exec_())

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

。七十二。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值