继承于 QWidget

应用程序级别的模态对话框:当模态的对话框出现时,用户必须首先对对话框进行交互,直到关闭对话框,然后才能访问程序中其他的窗口----exec()

窗口级别的模态对话框:该模态仅仅阻塞与对话框关联的窗口,但是依然允许用户与程序中其它窗口交互----open()

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

import sys
from PyQt5.QtWidgets import QApplication, QWidget,QDialog,QPushButton class Demo(QWidget):
def __init__(self):
super().__init__()
self.resize(300,300)
self.setWindowTitle('QDialog') dl=QDialog(self) #创建对话框但不显示
#参数:就是对话框关联的窗口 self.dl=dl dl.setWindowTitle('对话框')
#dl.exec() #显示对话框--模态对话框---应用程序级别
#dl.open() #显示对话框--模态对话框---窗口级别 dl.resize(200,200) #dl.setModal(True) #设置成模态对话框
#此指令展示后,show显示的也是模态--默认窗口级别 #dl.setWindowModality(Qt.WindowModal) #设置对话框的级别
#Qt.NonModal 非模态对话框
        #Qt.WindowModal    窗口级别
#Qt.ApplicationModal 应用程序级别 dl.setSizeGripEnabled(True) #是否显示尺寸调整控件
#isSizeGripEnabled() -> bool 返回是否显示尺寸调整控件 btn=QPushButton('接受',dl)
btn.move(20,100)
btn.clicked.connect(self.AA) btn1 = QPushButton('拒绝', dl)
btn1.move(120, 100)
btn1.clicked.connect(self.BB) btn2 = QPushButton('完成', dl)
btn2.move(120, 150)
btn2.clicked.connect(self.CC) # 信号
dl.accepted.connect(self.DD) #接受槽函数
dl.rejected.connect(self.EE) #拒绝槽函数
dl.finished.connect(self.FF) #完成槽函数
#会向槽函数传递一个值--接受=1;拒绝=0,完成-自定义的值
#点击接受或拒绝,完成槽函数也运行 #dl.show() #显示对话框--非模态对话框
s=dl.exec() #通过返回值可以知道点击了哪个按钮
def FF(self,val):
print('点击了完成按钮',val)
def EE(self):
print('点击了拒绝按钮')
def DD(self):
print('点击了接受按钮') def AA(self):
self.dl.accept() #发出接受信号--显示对话框函数的返回值1
def BB(self):
self.dl.reject() #发出拒绝信号--显示对话框函数的返回值0
def CC(self):
self.dl.done(8) #发出完成信号--显示对话框函数的返回值8--自定义返回值 #dl.setResult(99) #不关闭对话框-直接设置对话框的返回值
#result() -> int 获取返回值 if __name__ == '__main__':
app = QApplication(sys.argv)
demo = Demo()
demo.show()
sys.exit(app.exec_())

子类:QFontDialog--字体对话框

方法一:

import sys
from PyQt5.QtWidgets import QApplication, QWidget,QPushButton,QFontDialog,QLabel class Demo(QWidget):
def __init__(self):
super().__init__()
self.resize(300,300)
self.setWindowTitle('QFontDialog') #创建字体对话框--但不显示
# QFontDialog(QFont, parent: QWidget = None) ---带默认字体 self.label=QLabel('塘沽五中',self)
self.label.move(100,10) self.fdl=QFontDialog(self)
btn=QPushButton('按钮',self)
btn.move(100,250)
btn.clicked.connect(self.AA) #self.fdl.setOption(QFontDialog.NoButtons) #选项控制--单个选项
#QFontDialog.NoButtons 不显示“ 确定”和“ 取消”按钮。(对“实时对话框”有用。)
# 参数2 True--设置该选项;False--取消该选项 #self.fdl.setOptions(QFontDialog.NoButtons | QFontDialog.MonospacedFonts) # 选项控制--多个选项
#QFontDialog.MonospacedFonts 只显示等宽字体
#QFontDialog.ProportionalFonts 显示比例字体
#QFontDialog.NonScalableFonts 显示不可缩放的字体
#QFontDialog.ScalableFonts 显示可缩放字体
#QFontDialog.DontUseNativeDialog 在Mac上使用Qt的标准字体对话框而不是Apple的原生字体面板。 #s=self.fdl.testOption(QFontDialog.NoButtons) #测试某个选项是否可以生效
#options() -> QFontDialog.FontDialogOption 获取当前的选项
#print(s) #信号
self.fdl.currentFontChanged.connect(self.CC)
#会向槽函数传递一个QFont def CC(self,font):
print('当前字体改变了',font)
self.label.adjustSize()
self.label.setFont(font) def AA(self):
#self.fdl.open(self.BB)
#参数 槽函数--可选--点击字体对话框的OK按钮时,自动执行槽函数 s=self.fdl.exec()
#点击确定按钮返回1,点击取消按钮返回0 if s :
print(self.fdl.selectedFont()) #setCurrentFont(QFont) 设置当前字体
#currentFont() -> QFont 返回当前字体 def BB(self):
print('字体已经被选择')
s=self.fdl.selectedFont() #返回字体对话框的字体
#<PyQt5.QtGui.QFont object at 0x0000006772739D68>
print(s) if __name__ == '__main__':
app = QApplication(sys.argv)
demo = Demo()
demo.show()
sys.exit(app.exec_())

方法二:

import sys
from PyQt5.QtWidgets import QApplication, QWidget,QPushButton,QFontDialog,QLabel
from PyQt5.QtGui import QFont class Demo(QWidget):
def __init__(self):
super().__init__()
self.resize(300,300)
self.setWindowTitle('QFontDialog') #创建字体对话框--但不显示 self.label=QLabel('塘沽五中',self)
self.label.move(100,10) self.font=QFont('华文琥珀',20,QFont.Bold) btn=QPushButton('按钮',self)
btn.move(100,250)
btn.clicked.connect(self.AA) def AA(self):
#r=QFontDialog.getFont(self) #弹出字体对话框
#点击按钮后,返回一个元组--字体QFont和True或False(True表示点击的是确定按钮,False表示点击的是取消按钮)
#(<PyQt5.QtGui.QFont object at 0x00000048EA3B8DD8>, True) r = QFontDialog.getFont(self.font,self,'请选择字体') # 弹出字体对话框
#参数1 默认字体
#参数2 父控件
#参数3 对话框标题
#参数4 选项--看方法一 print(r)
if r[1]: #如果点击的是确定按钮
self.label.setFont(r[0]) #r[0]就是返回的字体
self.label.adjustSize() if __name__ == '__main__':
app = QApplication(sys.argv)
demo = Demo()
demo.show()
sys.exit(app.exec_())

信号:

currentFontChanged(QFont)      当前字体发生改变时

fontSelected(QFont)     最终选择字体时

子类-QColorDialog-颜色选择对话框

方法一---show--colorSelected信号

import sys
from PyQt5.QtWidgets import QApplication, QWidget,QPushButton,QColorDialog,QLabel
from PyQt5.QtGui import QColor,QPalette class Demo(QWidget):
def __init__(self):
super().__init__()
self.resize(300,300)
self.setWindowTitle('QFontDialog') self.label=QLabel('塘沽五中',self)
self.label.move(100,10) self.cd=QColorDialog(QColor(250,0,0),self) #创建颜色对话框--但不显示
#参数1 默认颜色 self.pl=QPalette() #创建调色板 btn=QPushButton('按钮',self)
btn.move(100,250)
btn.clicked.connect(self.AA) #信号
self.cd.colorSelected.connect(self.color) #选中最终颜色时发出信号-点击对话框的确定按钮时
#会向槽函数传递一个值---QColor #currentColorChanged(QColor color) 当前颜色变化时
      #会向槽函数传递一个值---QColor

    def color(self,col):
print(col,type(col))
self.pl.setColor(QPalette.Background,col) #给调色板设置颜色
#QPalette.Background 表示设置背景色
#QPalette.WindowText 表示设置文本颜色
self.setPalette(self.pl) #给控件设置颜色
pass
def AA(self):
self.cd.show() if __name__ == '__main__':
app = QApplication(sys.argv)
demo = Demo()
demo.show()
sys.exit(app.exec_())

方法二:open--selectedColor()

import sys
from PyQt5.QtWidgets import QApplication, QWidget,QPushButton,QColorDialog,QLabel
from PyQt5.QtGui import QColor,QPalette class Demo(QWidget):
def __init__(self):
super().__init__()
self.resize(300,300)
self.setWindowTitle('QFontDialog') self.label=QLabel('塘沽五中',self)
self.label.move(100,10) self.cd=QColorDialog(QColor(250,0,0),self) #创建颜色对话框--但不显示
#参数1 默认颜色 self.pl=QPalette() #创建调色板 btn=QPushButton('按钮',self)
btn.move(100,250)
btn.clicked.connect(self.AA) def color(self): self.pl.setColor(QPalette.Background,self.cd.selectedColor()) #给调色板设置颜色
#QPalette.Background 表示设置背景色
#QPalette.WindowText 表示设置文本颜色
#selectedColor() 返回最终选择的颜色
self.setPalette(self.pl) #给控件设置颜色
pass
def AA(self):
self.cd.open(self.color) #点击确定按钮时会自动执行槽函数 if __name__ == '__main__':
app = QApplication(sys.argv)
demo = Demo()
demo.show()
sys.exit(app.exec_())

方法三:exec--selectedColor()

import sys
from PyQt5.QtWidgets import QApplication, QWidget,QPushButton,QColorDialog,QLabel
from PyQt5.QtGui import QColor,QPalette class Demo(QWidget):
def __init__(self):
super().__init__()
self.resize(300,300)
self.setWindowTitle('QFontDialog') self.label=QLabel('塘沽五中',self)
self.label.move(100,10) self.cd=QColorDialog(QColor(250,0,0),self) #创建颜色对话框--但不显示
#参数1 默认颜色 self.pl=QPalette() #创建调色板 btn=QPushButton('按钮',self)
btn.move(100,250)
btn.clicked.connect(self.AA) def AA(self):
r=self.cd.exec() #用户点击确定按钮返回值1;用户点击取消按钮返回值0
if r :
self.pl.setColor(QPalette.Background, self.cd.selectedColor()) # 给调色板设置颜色
self.setPalette(self.pl) # 给控件设置颜色 if __name__ == '__main__':
app = QApplication(sys.argv)
demo = Demo()
demo.show()
sys.exit(app.exec_())

控制选项

import sys
from PyQt5.QtWidgets import QApplication, QWidget,QPushButton,QColorDialog,QLabel
from PyQt5.QtGui import QColor,QPalette class Demo(QWidget):
def __init__(self):
super().__init__()
self.resize(300,300)
self.setWindowTitle('QFontDialog') self.label=QLabel('塘沽五中',self)
self.label.move(100,10) self.cd=QColorDialog(QColor(250,0,0),self) #创建颜色对话框--但不显示
#参数1 默认颜色 self.pl=QPalette() #创建调色板 btn=QPushButton('按钮',self)
btn.move(100,250)
btn.clicked.connect(self.AA) #self.cd.setOption(QColorDialog.NoButtons) #选项控制--单个选项
#QColorDialog.NoButtons 不显示“ 确定”和“ 取消”按钮。(对“实时对话框”有用)
     #参数2 on 表示有效 False表示取消

self.cd.setOptions(QColorDialog.NoButtons | QColorDialog.ShowAlphaChannel) #选项控制--多个选项

#QColorDialog.ShowAlphaChannel 对话框中增加alpha设置项

self.cd.currentColorChanged.connect(self.BB) #当前颜色变化时发出信号
def BB(self):
s=self.cd.currentColor() #返回当前颜色 #setCurrentColor(QColor()) 设置当前颜色 self.pl.setColor(QPalette.Background, s)
self.setPalette(self.pl) def AA(self):
r=self.cd.exec()
if r :
self.pl.setColor(QPalette.Background, self.cd.selectedColor()) # 给调色板设置颜色
self.setPalette(self.pl) # 给控件设置颜色 if __name__ == '__main__':
app = QApplication(sys.argv)
demo = Demo()
demo.show()
sys.exit(app.exec_())

静态方法

import sys
from PyQt5.QtWidgets import QApplication, QWidget,QPushButton,QColorDialog,QLabel
from PyQt5.QtGui import QColor,QPalette class Demo(QWidget):
def __init__(self):
super().__init__()
self.resize(300,300)
self.setWindowTitle('QFontDialog') self.label=QLabel('塘沽五中',self)
self.label.move(100,10)
self.btn=QPushButton('按钮',self)
self.btn.move(50,250)
self.btn.clicked.connect(self.AA)
self.btn1 = QPushButton('按钮1', self)
self.btn1.move(150, 250)
self.btn1.clicked.connect(self.BB) self.pl = QPalette() # 创建调色板 def BB(self):
col=QColorDialog.getColor(QColor(0,255,0),self,'请选择颜色') #显示颜色面板
#参数1 默认颜色
#参数3 标题
#参数4 选项--看前面
#用户点击确定按钮-返回值 颜色;用户点击取消按钮 返回黑色 self.pl.setColor(QPalette.Background, col) # 给调色板设置颜色
self.setPalette(self.pl) # 给控件设置颜色 pass def AA(self):
s=self.cd.customCount() #返回自定义颜色的格数
s=QColorDialog.customCount() #返回自定义颜色的格数
#
QColorDialog.setCustomColor(0,QColor(255,0,0)) #在自定义面板中自定义颜色
#参数1 格的序号
#参数2 颜色
#在显示之前设置好

s=QColorDialog.customColor(0) #获取自定义面板的颜色 -> QColor

#参数 格序号

QColorDialog.setStandardColor(5,QColor(0,0,255)) #在标准颜色面板中自定义颜色

# 参数1 格的序号
# 参数2 颜色

s=QColorDialog.standardColor(5) #获取标准颜色面板的颜色 -> QColor

# 参数 格序号 self.cd.show() if __name__ == '__main__':
app = QApplication(sys.argv)
demo = Demo()
demo.show()
sys.exit(app.exec_())

子类---文件选择对话框QFileDialog

提供了一个对话框,允许用户选择文件或目录

允许用户遍历文件系统,以选择一个或多个文件或目录

静态方法--文件对话框--推荐:

import sys
from PyQt5.QtWidgets import QApplication, QWidget,QPushButton,QLabel,QFileDialog class Demo(QWidget):
def __init__(self):
super().__init__()
self.resize(300,300)
self.setWindowTitle('QFontDialog') self.label=QLabel('塘沽五中',self)
self.label.move(100,10)
self.btn=QPushButton('按钮',self)
self.btn.move(50,250)
self.btn.clicked.connect(self.AA) def AA(self):
#r=QFileDialog.getOpenFileName(self,'请选择要打开的文件','./','All(*.*);;Image(*.png *.jpg);;Python(*.py)','Python(*.py)') #显示文件选择对话框--获取打开的文件名称--获取一个文件
#参数2 标题
#参数3 文件所在的目录
#参数4 文件类型过滤器--在文件类型选择框中可以选择的类型
#参数5 默认文件类型
#参数6 选项
#返回值是2个元素的元组:文件的完成路径和类型选择框中显示的类型 ('D:/ss/ssss/test1.py', 'Python(*.py)') #r = QFileDialog.getOpenFileNames(self, '请选择要打开的文件', './', 'All(*.*);;Image(*.png *.jpg);;Python(*.py)','Python(*.py)') #显示文件选择对话框-- 获取打开的文件名称--获取多个个文件
# 返回值是个元组:选中文件的完成路径和类型选择框中显示的类型
#(['D:/ss/ssss/test.py', 'D:/ss/ssss/test1.py', 'D:/ss/ssss/大象.png', 'D:/ss/ssss/大象1.png'], 'All(*.*)') #r=QFileDialog.getOpenFileUrl(self,'请选择要打开的文件','./','All(*.*);;Image(*.png *.jpg);;Python(*.py)','Python(*.py)') #显示文件选择对话框--获取文件的Url地址--一个文件
#返回值 (PyQt5.QtCore.QUrl('file:///D:/ss/ssss/test1.py'), 'Python(*.py)') #r = QFileDialog.getOpenFileUrls(self, '请选择要打开的文件', './', 'All(*.*);;Image(*.png *.jpg);;Python(*.py)','Python(*.py)') # 显示文件选择对话框--获取文件的Url地址--多个文件
#返回值 ([PyQt5.QtCore.QUrl('file:///D:/ss/ssss/test.py'), PyQt5.QtCore.QUrl('file:///D:/ss/ssss/大象.png')], 'All(*.*)')

r=QFileDialog.getSaveFileName(self,'保存文件','./','All(*.*);;Image(*.png *.jpg);;Python(*.py)','Python(*.py)')
#显示保存文件对话框
#返回值 ('D:/ss/ssss/lm.py', 'Python(*.py)') print(r) if __name__ == '__main__':
app = QApplication(sys.argv)
demo = Demo()
demo.show()
sys.exit(app.exec_())

过滤字符串格式:名称1(*.jpg *.png);;名称2(*.py)

静态方法---目录对话框:

import sys
from PyQt5.QtWidgets import QApplication, QWidget,QPushButton,QLabel,QFileDialog
from PyQt5.QtCore import QUrl class Demo(QWidget):
def __init__(self):
super().__init__()
self.resize(300,300)
self.setWindowTitle('QFontDialog') self.label=QLabel('塘沽五中',self)
self.label.move(100,10)
self.btn=QPushButton('按钮',self)
self.btn.move(50,250)
self.btn.clicked.connect(self.AA) def AA(self):
#r=QFileDialog.getExistingDirectory(self,'请选择文件夹','./') #显示文件夹选择框
#参数1 父控件
#参数2 标题
#参数3 默认目录
#返回值:目录路径 D:/ss/ssss

r = QFileDialog.getExistingDirectoryUrl(self, '请选择文件夹', QUrl('./')) # 显示文件夹选择框

#PyQt5.QtCore.QUrl('file:///E:/python') print(r) if __name__ == '__main__':
app = QApplication(sys.argv)
demo = Demo()
demo.show()
sys.exit(app.exec_())

构造函数方法:

import sys
from PyQt5.QtWidgets import QApplication, QWidget,QPushButton,QLabel,QFileDialog
from PyQt5.QtCore import QUrl class Demo(QWidget):
def __init__(self):
super().__init__()
self.resize(300,300)
self.setWindowTitle('QFontDialog') self.label=QLabel('塘沽五中',self)
self.label.move(100,10)
self.btn=QPushButton('按钮',self)
self.btn.move(50,250)
self.btn.clicked.connect(self.AA) self.fdl = QFileDialog(self, '文件对话框', './', 'All(*.*);;Image(*.png *.jpg);;Python(*.py)') # 创建文件对话框但是不显示
# 参数1 父控件
# 参数2 标题
# 参数3 默认目录
# 参数4 类型选择框中可以选择的类型 #信号:
#self.fdl.fileSelected.connect(self.BB) #最终选择一个文件时
#会向槽函数传递一个字符串--文件的完整路径--D:/ss/ssss/大象.png #self.fdl.filesSelected.connect(self.EE) # 最终选择多个文件时
#注意:终选择一个文件时也发出这个信号
# 会向槽函数传递一个列表--['D:/ss/ssss/大象.png', 'D:/ss/ssss/大象1.png'] self.fdl.urlSelected.connect(self.BB) # 最终选择一个文件url时
# 会向槽函数传递一个字符串--QUrl--PyQt5.QtCore.QUrl('file:///D:/ss/ssss/大象.png') self.fdl.urlsSelected.connect(self.EE) # 最终选择多个文件url时
# 注意:终选择一个文件时也发出这个信号
# 会向槽函数传递一个列表--[PyQt5.QtCore.QUrl('file:///D:/ss/ssss/大象.png'), PyQt5.QtCore.QUrl('file:///D:/ss/ssss/大象1.png')] #self.fdl.currentChanged.connect(self.CC) #当前路径发生改变时
# 会向槽函数传递一个字符串--文件的完整路径--D:/ss/ssss/大象.png #self.fdl.currentUrlChanged.connect(self.DD) # 当前路径url发生改变时
# 会向槽函数传递一个字符串--文件的QUrl--PyQt5.QtCore.QUrl('file:///D:/ss/ssss/大象1.png') #self.fdl.directoryEntered.connect(self.EE) #打开选中文件夹时
# 会向槽函数传递一个字符串--新打开的文件夹--D:/ss/ssss/.idea #self.fdl.directoryUrlEntered.connect(self.EE) # 打开选中文件夹url时
# 会向槽函数传递一个字符串--新打开的QUrl--PyQt5.QtCore.QUrl('file:///D:/ss') #self.fdl.filterSelected.connect(self.EE) #过滤器发生变化时
# 会向槽函数传递一个字符串--过滤器--IMG(*.png *.jpg) #urlSelected(QUrl url) 最终选择一个url时 #urlsSelected(List[QUrl]) 最终选择多个url时 def EE(self,path):
print('选中EE',path)
def DD(self,path):
print('当前路径url发生改变',path)
def CC(self,path):
print('当前路径发生了改变',path) def AA(self): #self.fdl.setAcceptMode(QFileDialog.AcceptSave) #设置对话框的模式
#QFileDialog.AcceptSave 保存对话框
#QFileDialog.AcceptOpen 打开对话框---默认
#acceptMode() -> QFileDialog.AcceptMode 返回接受模式 self.fdl.setDefaultSuffix('txt') #默认后缀
#defaultSuffix() -> str 返回默认后缀 self.fdl.setFileMode(QFileDialog.ExistingFiles) # 设置文件模式
# QFileDialog.Directory ---目录对话框
# QFileDialog.ExistingFile 单个现有文件的名称
#QFileDialog.AnyFile 文件的名称,无论是否存在
#QFileDialog.ExistingFiles 零个或多个现有文件的名称
#fileMode() -> QFileDialog.FileMode 返回文件模式 #self.fdl.setNameFilter('IMG(*.png *.jpg)') #需要显示的文件类型--一种类型
#此时构造函数中设置的文件类型无效
#setNameFilters(str) 返回 self.fdl.setNameFilters(['IMG(*.png *.jpg)','python(*.py)']) # 可以显示的文件类型--多种类型
# 此时构造函数中设置的文件类型无效 self.fdl.setLabelText(QFileDialog.LookIn, 'xxxx') #设置对话框的标签文本
#QFileDialog.FileName 修改文件名标签
#QFileDialog.Accept 修改打开或保存标签
#QFileDialog.Reject 修改取消标签
#QFileDialog.FileType 保存对话框的保存类型标签
#QFileDialog.LookIn ???
#具体看下面的图 self.fdl.open() #显示文件对话框或目录对话框
#返回的路径通过信号来处理 #exec() -> int #显示文件对话框或目录对话框 def BB(self,path):
print('最终选择的文件',path) if __name__ == '__main__':
app = QApplication(sys.argv)
demo = Demo()
demo.show()
sys.exit(app.exec_())

子类-QInputDialog-输入对话框:

提供了一个简单方便的对话框,获得来自用户的单个值

输入值可以是字符串,数字或列表中的项目

静态方法---推荐:

import sys
from PyQt5.QtWidgets import QApplication, QWidget,QPushButton,QLabel,QInputDialog,QLineEdit
from PyQt5.QtCore import QUrl class Demo(QWidget):
def __init__(self):
super().__init__()
self.resize(300,300)
self.setWindowTitle('QFontDialog') self.label=QLabel('塘沽五中',self)
self.label.move(100,10)
self.btn=QPushButton('按钮',self)
self.btn.move(50,250)
self.btn.clicked.connect(self.AA) def AA(self): #r=QInputDialog.getInt(self,'输入对话框','请输入:',10,5,20,step=2)
#展示对话框,获取整型数值
#参数1 父控件
#参数2 标题
#参数3 提示文本
#参数4 默认值
#参数5 最小值
#参数6 最大值
#step 是步长-默认1
#返回值:元组--(6, True) ,True表示用户点击的是确定按钮,False表示用户点击的是取消按钮 #r = QInputDialog.getDouble(self, '输入对话框', '请输入:', 10.24, 5, 20,decimals=2)
# 展示对话框,获取浮点数数值
# 参数1 父控件
# 参数2 标题
# 参数3 提示文本
# 参数4 默认值
# 参数5 最小值
# 参数6 最大值
#decimals 小数位数-默认1位
# 返回值:元组--(13.0, True) ,True表示用户点击的是确定按钮,False表示用户点击的是取消按钮
#本身不提供步长设置---看下面的构造方法中的方法设置步长 #r = QInputDialog.getText(self, '输入对话框', '请输入:',echo=QLineEdit.Password)
# 展示对话框,获取字符串-单行文本
# 参数1 父控件
# 参数2 标题
# 参数3 提示文本
#echo 文本显示模式 QLineEdit.Password--密文
# 返回值:元组--('李明', True) True表示用户点击的是确定按钮,False表示用户点击的是取消按钮 #r=QInputDialog.getMultiLineText(self,'多行文本','请输入','默认文本')
# 展示对话框,获取字符串-多行文本
# 参数1 父控件
# 参数2 标题
# 参数3 提示文本
#参数4 默认文本
#返回值:('塘沽五中\nlm', True) True表示用户点击的是确定按钮,False表示用户点击的是取消按钮

r=QInputDialog.getItem(self,'获取条目','请输入',['条目1','条目2','条目3'],1,True) #获取条目

# 展示对话框,获取条目文本
# 参数1 父控件
# 参数2 标题
# 参数3 提示文本
# 参数4 默认条目-列表
#参数5 默认条目选择序号
#参数6 True可以编辑
#返回值:('条目2', False) True表示用户点击的是确定按钮,False表示用户点击的是取消按钮 print(r,type(r)) if __name__ == '__main__':
app = QApplication(sys.argv)
demo = Demo()
demo.show()
sys.exit(app.exec_())

构造函数法:

import sys
from PyQt5.QtWidgets import QApplication, QWidget,QPushButton,QLabel,QInputDialog class Demo(QWidget):
def __init__(self):
super().__init__()
self.resize(300,300)
self.setWindowTitle('QFontDialog') self.label=QLabel('塘沽五中',self)
self.label.move(100,10)
self.btn=QPushButton('按钮',self)
self.btn.move(50,250)
self.btn.clicked.connect(self.AA) def AA(self):
idl=QInputDialog(self) #创建输入对话框--但不展示
#参数1 父控件
#参数2 窗口标志 看 https://www.cnblogs.com/liming19680104/p/10701412.html idl.setInputMode(QInputDialog.TextInput) # 设置输入模式
# QInputDialog.TextInput 文本输入
# QInputDialog.IntInput 整型值输入
# QInputDialog.DoubleInput 浮点数输入
# inputMode(self) -> QInputDialog.InputMode 返回输入模式 #idl.setOption(QInputDialog.NoButtons, True) #设置选项
#参数2 True--设置有效,False--设置无效
#QInputDialog.UseListViewForComboBoxItems 使用QListView而不是QComboBox来显示,使用setComboBoxItems来设置的项目。
#QInputDialog.NoButtons 不显示“ 确定”和“ 取消”按钮(对“实时对话框”有用)
#QInputDialog.UsePlainTextEditForTextInput 使用QPlainTextEdit进行多行文本输入。该值在5.2中引入。 #testOption(self, QInputDialog.InputDialogOption) -> bool 测试某个选项是否有效
#options(self) -> QInputDialog.InputDialogOptions 返回选项 #idl.setComboBoxItems(['项目1','项目2','项目3']) #设置下拉列表项目
#此时输入框以下拉列表框的形式展示 #s=idl.comboBoxItems() #返回下拉项目
#['项目1', '项目2', '项目3'] #idl.setComboBoxEditable(True) #下拉列表框是否允许编辑
#isComboBoxEditable(self) -> bool 返回是否允许编辑 #idl.setTextValue('lm') #给文本输入框设置文本 idl.setLabelText('请输入:') #提示文本
#labelText(self) -> str 返回提示文本 idl.setOkButtonText('好的') #设置OK按钮文本
idl.setCancelButtonText('取消') #设置取消按钮文本 #idl.setDoubleMaximum(20.55) #浮点型最大值
#doubleMaximum() -> float 返回浮点型最大值 #idl.setDoubleMinimum(10.55) #浮点型最小值
#doubleMinimum(self) -> float 返回浮点型最小值 #idl.setDoubleRange(5.55, 10.55) #设置浮点型范围 #idl.setDoubleStep(0.5) #浮点型步长
#doubleStep(self) -> float 返回浮点型步长 #idl.setDoubleDecimals(3) #浮点型小数位数
#doubleDecimals() -> int 返回浮点型小数位数 #idl.setDoubleValue(9.6) #设置浮点型显示值 #idl.setIntMaximum(15) #设置整型最大值
#intMaximum(self) -> int 返回整型最大值 #idl.setIntMinimum(5) #设置整型最小值
#intMinimum(self) -> int 返回整型最小值 #idl.setIntRange(10, 20) #设置整型范围 #idl.setIntStep(2) #设置整型步长
#intStep(self) -> int 返回整型步长 #idl.setIntValue(14) #设置整型显示值 #信号
#idl.intValueChanged.connect(self.BB) #整型值发生改变时
#会向槽函数传递一个整型值--改变后的值 #idl.intValueSelected.connect(self.CC) # 整型值最终选中时
# 会向槽函数传递一个整型值--最终选中的值 #idl.doubleValueChanged.connect(self.BB) # 浮点值发生改变时
# 会向槽函数传递一个浮点值--改变后的值 #idl.doubleValueSelected.connect(self.CC) # 浮点值最终选中时
# 会向槽函数传递一个浮点值--最终选中的值 idl.textValueChanged.connect(self.BB) # 文本值发生改变时
# 会向槽函数传递一个文本值--改变后的值 idl.textValueSelected.connect(self.CC) # 文本值最终选中时
# 会向槽函数传递一个文本值--最终选中的值 r=idl.show() def BB(self,v):
print('数据改变了',v,type(v)) def CC(self,x):
print('选中了数据',x, type(x)) if __name__ == '__main__':
app = QApplication(sys.argv)
demo = Demo()
demo.show()
sys.exit(app.exec_())

天子骄龙

QDialog对话框的更多相关文章

  1. QDialog 模态对话框与事件循环(exec其实就是调用了show和eventLoop.exec)

    起源 qtcn中文论坛中有网友问到: 假设程序正常运行时,只有一个简单的窗体A,此时只有一个GUI主线程,在这个主线程中有一个事件循环处理窗体上的事件.当此程序运行到某阶段时,弹出一个模态窗体B(书上 ...

  2. (六)QDialog,QMessageBox,QFileDialog,QColorDialog颜色,QFontDialog字体

    QDialog 对话框: 1.模态对话框: QDialog dlg(this); // 显示模态对话框 exec ,后面的不可操作 dlg.exec(); // 阻塞 2.非模态对话框: QDialo ...

  3. QWidget、QMainWindow、QFrame、QWindow、QDialog、QScrollArea区别

    QWidget是所有可视化控件的基类,可以直接渲染出一个窗口来. QMainWindow用来表示一个主窗口,这个主窗口可以设置菜单和工具栏 QFrame用来表示一个框架,用来当作容器,因为可以设置它的 ...

  4. qt5--模态对话框和非模态对话框

    视频教程:https://www.bilibili.com/video/av51766541/?p=20 #include "win.h" #include <QMenuBa ...

  5. QT常用控件(一)——菜单栏和对话框

    引言 QMainWindow 是一个为用户提供主窗口程序的类,包含一个菜单栏(menu bar).多个工具栏(tool bars).多个锚接部件(dock widgets).一个状态栏(status ...

  6. GUI学习之二——PyQt控件初识

    一.控件概念 控件是一个程序界面上的各个独立的元素, 它具备用户点击.接收用户输入.展示不同内容.存放其他控件等功能. 二.控件分类 常用的控件按功能可以分为以下几种类 按钮 QPushButton— ...

  7. pyqt5的使用目录

    pyqt5的安装 我的第一个例子 标签控件QLabel的使用   按钮QPushButton 信号与槽 pyqt5模块介绍 pycharm活动模板  QObject 定时器  QWidget类-坐标系 ...

  8. QMessageBox消息框

    QMessageBox提供两套接口来实现,一种是static functions(静态方法调用),另外一种 the property-base API(基于属性的API) #需要 from PyQt5 ...

  9. 界面编程之QT窗口系统20180726

    /*******************************************************************************************/ 一.坐标系统 ...

随机推荐

  1. Log4j 日志操作包配置详解

    log4j简介 Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件,甚至是套接口服务器.NT的事件记录器.UNIX Syslog守护 ...

  2. Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 6. 条件

    前面的教程中,我们已经可以让小海龟绘制出各种图形了.但是,所有绘图的代码都是预先编好的,程序一旦运行起来,运行结果(绘制的图形)就是固定不变的.这一节中,咪博士将教大家如何让海龟响应用户的输入. im ...

  3. python之input()、while、title()和upper()

    代码举例: # 小应用:问卷调查,记录下调查者名字和回答,询问是否继续. # 运用数据字典.while.input().title()和upper(). responses = {} flag = T ...

  4. codeforces278A

    Circle Line CodeForces - 278A 郑州地铁的圆线有n个车站. 我们知道所有邻近站点之间的距离: d[1]是第1站和第2站之间的距离;d[2]是第2站和第3站之间的距离;… d ...

  5. Codeforces Round #404 (Div. 2)A,B,C

    A. Anton and Polyhedrons 题目链接:http://codeforces.com/contest/785/problem/A 智障水题 实现代码: #include<bit ...

  6. day11 匿名函数

    格式 lambda 形参 :逻辑运算方式 lambda x:x+1 普通的方式计算 卧槽.这么长! def calc(x): return x+1 res = calc(10) print(res) ...

  7. 7种JVM垃圾收集器特点,优劣势、及使用场景

    今天继续JVM的垃圾回收器详解,如果说垃圾收集算法是JVM内存回收的方法论,那么垃圾收集器就是内存回收的具体实现. 一.常见的垃圾收集器有3类 1.新生代的收集器包括 Serial PraNew Pa ...

  8. 自学Zabbix之路15.2 Zabbix数据库表结构简单解析-Items表

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix之路15.2 Zabbix数据库表结构简单解析-Items表 Items表记录了i ...

  9. python assert用法

    使用assert断言是学习python一个非常好的习惯,python assert 断言句语格式及用法很简单.在没完善一个程序之前,我们不知道程序在哪里会出错,与其让它在运行最崩溃,不如在出现错误条件 ...

  10. 分享一个自己做的SpringMVC的PPT

    分享一个自己做的SpringMVC的PPT,由于比较忙只写了一些重要的部分