PyQt5 控件学习(一个一个学习之QDialog)

Posted zach0812

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PyQt5 控件学习(一个一个学习之QDialog)相关的知识,希望对你有一定的参考价值。

QDialog 的继承图:

技术图片

 

QDialog 的描述:

技术图片

QDialog 主要提供的是这四个里面的一些共性!

它主要是分四类,字体,颜色,文件,自定义输入。

技术图片

它是对话框的基类,它是顶级窗口,它主要用于和用户简短的通信。

有关模态(阻塞):

技术图片

 

对话框一般有返回值,它们有默认按钮

QDialog 的继承:

它直接继承自 QWidget 

 

 

QDialog 的功能作用:

技术图片

QDialog 的功能作用之控件的创建:

QDialog 的功能作用之模态设置:

QDialog 的功能作用之弹出:

技术图片
from PyQt5.Qt import * #刚开始学习可以这样一下导入
import sys
#1,创建app
app  = QApplication(sys.argv)


#2,控件的操作:
#创建控件
window = QWidget()


#设置控件
window.setWindowTitle("QDialog的学习")
window.resize(500,500)

dialog = QDialog(window)  #对话框和 主窗口不关联

dialog.setWindowTitle("对话框")

############################应用程序级别的模态调用###############################
# dialog.exec()   #当当前对话框没有操作完成时,才可以和其他窗口交互


############################应用程序级别的模态调用###############################

############################窗口级别的模态调用###############################

# dialog.open()  #它阻塞的仅仅是和对话框关联的窗口,但是程序中其他的窗口还是可以和用户交互的。
# dialog = QDialog(window)  #对话框和 主窗口关联(此时仍然是顶层弹出) 如果这样就要阻塞了

#它的应用场景一般是选择文件,选择颜色



############################窗口级别的模态调用###############################


############################非模态###############################
# dialog.show()
#它的应用场景是  查找,替换的窗口

#但是,非模态结合两个方法也可以变为模态对话框。
dialog.show()
dialog.setModal(True)  #窗口级别的阻塞


############################非模态###############################


#展示控件
window.show()

#3,进入消息循环
sys.exit(app.exec_())
View Code

 

QDialog 的功能作用之是否显示尺寸调整控件:

技术图片

 

技术图片
from PyQt5.Qt import * #刚开始学习可以这样一下导入
import sys
#1,创建app
app  = QApplication(sys.argv)


#2,控件的操作:
#创建控件
window = QWidget()


#设置控件
window.setWindowTitle("QDialog的学习")
window.resize(500,500)

dialog = QDialog(window)  #对话框和 主窗口不关联

dialog.setWindowTitle("对话框")

dialog.open()

dialog.setSizeGripEnabled(True)


#展示控件
window.show()

#3,进入消息循环
sys.exit(app.exec_())
View Code

 

 

QDialog 的功能作用之常用操作槽:

技术图片

 

技术图片
from PyQt5.Qt import * #刚开始学习可以这样一下导入
import sys
#1,创建app
app  = QApplication(sys.argv)


#2,控件的操作:
#创建控件
window = QWidget()


#设置控件
window.setWindowTitle("QDialog的学习")
window.resize(500,500)

dialog = QDialog(window)  #对话框和 主窗口不关联
dialog.setWindowTitle("对话框")

btn = QPushButton(dialog)
btn.setText("btn1")
btn.move(20,20)
btn.clicked.connect(lambda :dialog.accept())  #接收

btn2 = QPushButton(dialog)
btn2.setText("btn2")
btn2.move(60,60)
btn2.clicked.connect(lambda :dialog.reject()) #拒绝

btn3 = QPushButton(dialog)
btn3.setText("btn3")
btn3.move(100,100)
btn3.clicked.connect(lambda :dialog.done(8))  #自定义


ret  = dialog.exec()
print(ret)


#展示控件
window.show()

#3,进入消息循环
sys.exit(app.exec_())
View Code

 

QDialog 的功能作用之设置和获取数值:

技术图片
from PyQt5.Qt import * #刚开始学习可以这样一下导入
import sys
#1,创建app
app  = QApplication(sys.argv)


#2,控件的操作:
#创建控件
window = QWidget()


#设置控件
window.setWindowTitle("QDialog的学习")
window.resize(500,500)

dialog = QDialog(window)  #对话框和 主窗口不关联
dialog.setWindowTitle("对话框")

btn = QPushButton(dialog)
btn.setText("btn1")
btn.move(20,20)
btn.clicked.connect(lambda :dialog.accept())  #接收

btn2 = QPushButton(dialog)
btn2.setText("btn2")
btn2.move(60,60)
btn2.clicked.connect(lambda :print(dialog.result()))  # 此时点 btn2 和 btn3 都不会关闭对话框了

btn3 = QPushButton(dialog)
btn3.setText("btn3")
btn3.move(100,100)
btn3.clicked.connect(lambda :dialog.setResult(888))


ret  = dialog.exec()
print(ret)


#展示控件
window.show()

#3,进入消息循环
sys.exit(app.exec_())
View Code

 

QDialog 的信号:

技术图片

技术图片
from PyQt5.Qt import * #刚开始学习可以这样一下导入
import sys
#1,创建app
app  = QApplication(sys.argv)


#2,控件的操作:
#创建控件
window = QWidget()


#设置控件
window.setWindowTitle("QDialog的学习")
window.resize(500,500)

dialog = QDialog(window)  #对话框和 主窗口不关联
dialog.setWindowTitle("对话框")

btn = QPushButton(dialog)
btn.setText("btn1")
btn.move(20,20)
btn.clicked.connect(lambda :dialog.accept())  #接收

btn2 = QPushButton(dialog)
btn2.setText("btn2")
btn2.move(60,60)
btn2.clicked.connect(lambda :dialog.reject()) #拒绝

btn3 = QPushButton(dialog)
btn3.setText("btn3")
btn3.move(100,100)
btn3.clicked.connect(lambda :dialog.done(8))  #自定义

############################信号###############################
#1
dialog.accepted.connect(lambda :print("接受"))
#2
dialog.rejected.connect(lambda :print("拒绝"))
#3
dialog.finished.connect(lambda val:print("完成按钮",val))  #点击btn3 只触发一个信号 

############################信号###############################

dialog.open()


#展示控件
window.show()

#3,进入消息循环
sys.exit(app.exec_())
View Code

 

总结:

下面看它的子类中的一些特殊功能:
首先看QFontDialog: https://www.cnblogs.com/zach0812/p/11392843.html

 

以上是关于PyQt5 控件学习(一个一个学习之QDialog)的主要内容,如果未能解决你的问题,请参考以下文章

PyQt5 控件学习(一个一个学习之QAbstractButton)

PyQt5 控件学习(一个一个学习之QCommandLinkButton)

PyQt5 控件学习(一个一个学习之QKeySequenceEdit)

PyQt5 控件学习(一个一个学习之QScrollBar)

PyQt5 控件学习(一个一个学习之QRadioButton)

PyQt5 控件学习(一个一个学习之QCheckBox)