QDialog对话框
继承于 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对话框的更多相关文章
- QDialog 模态对话框与事件循环(exec其实就是调用了show和eventLoop.exec)
起源 qtcn中文论坛中有网友问到: 假设程序正常运行时,只有一个简单的窗体A,此时只有一个GUI主线程,在这个主线程中有一个事件循环处理窗体上的事件.当此程序运行到某阶段时,弹出一个模态窗体B(书上 ...
- (六)QDialog,QMessageBox,QFileDialog,QColorDialog颜色,QFontDialog字体
QDialog 对话框: 1.模态对话框: QDialog dlg(this); // 显示模态对话框 exec ,后面的不可操作 dlg.exec(); // 阻塞 2.非模态对话框: QDialo ...
- QWidget、QMainWindow、QFrame、QWindow、QDialog、QScrollArea区别
QWidget是所有可视化控件的基类,可以直接渲染出一个窗口来. QMainWindow用来表示一个主窗口,这个主窗口可以设置菜单和工具栏 QFrame用来表示一个框架,用来当作容器,因为可以设置它的 ...
- qt5--模态对话框和非模态对话框
视频教程:https://www.bilibili.com/video/av51766541/?p=20 #include "win.h" #include <QMenuBa ...
- QT常用控件(一)——菜单栏和对话框
引言 QMainWindow 是一个为用户提供主窗口程序的类,包含一个菜单栏(menu bar).多个工具栏(tool bars).多个锚接部件(dock widgets).一个状态栏(status ...
- GUI学习之二——PyQt控件初识
一.控件概念 控件是一个程序界面上的各个独立的元素, 它具备用户点击.接收用户输入.展示不同内容.存放其他控件等功能. 二.控件分类 常用的控件按功能可以分为以下几种类 按钮 QPushButton— ...
- pyqt5的使用目录
pyqt5的安装 我的第一个例子 标签控件QLabel的使用 按钮QPushButton 信号与槽 pyqt5模块介绍 pycharm活动模板 QObject 定时器 QWidget类-坐标系 ...
- QMessageBox消息框
QMessageBox提供两套接口来实现,一种是static functions(静态方法调用),另外一种 the property-base API(基于属性的API) #需要 from PyQt5 ...
- 界面编程之QT窗口系统20180726
/*******************************************************************************************/ 一.坐标系统 ...
随机推荐
- Log4j 日志操作包配置详解
log4j简介 Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件,甚至是套接口服务器.NT的事件记录器.UNIX Syslog守护 ...
- Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 6. 条件
前面的教程中,我们已经可以让小海龟绘制出各种图形了.但是,所有绘图的代码都是预先编好的,程序一旦运行起来,运行结果(绘制的图形)就是固定不变的.这一节中,咪博士将教大家如何让海龟响应用户的输入. im ...
- python之input()、while、title()和upper()
代码举例: # 小应用:问卷调查,记录下调查者名字和回答,询问是否继续. # 运用数据字典.while.input().title()和upper(). responses = {} flag = T ...
- codeforces278A
Circle Line CodeForces - 278A 郑州地铁的圆线有n个车站. 我们知道所有邻近站点之间的距离: d[1]是第1站和第2站之间的距离;d[2]是第2站和第3站之间的距离;… d ...
- Codeforces Round #404 (Div. 2)A,B,C
A. Anton and Polyhedrons 题目链接:http://codeforces.com/contest/785/problem/A 智障水题 实现代码: #include<bit ...
- day11 匿名函数
格式 lambda 形参 :逻辑运算方式 lambda x:x+1 普通的方式计算 卧槽.这么长! def calc(x): return x+1 res = calc(10) print(res) ...
- 7种JVM垃圾收集器特点,优劣势、及使用场景
今天继续JVM的垃圾回收器详解,如果说垃圾收集算法是JVM内存回收的方法论,那么垃圾收集器就是内存回收的具体实现. 一.常见的垃圾收集器有3类 1.新生代的收集器包括 Serial PraNew Pa ...
- 自学Zabbix之路15.2 Zabbix数据库表结构简单解析-Items表
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix之路15.2 Zabbix数据库表结构简单解析-Items表 Items表记录了i ...
- python assert用法
使用assert断言是学习python一个非常好的习惯,python assert 断言句语格式及用法很简单.在没完善一个程序之前,我们不知道程序在哪里会出错,与其让它在运行最崩溃,不如在出现错误条件 ...
- 分享一个自己做的SpringMVC的PPT
分享一个自己做的SpringMVC的PPT,由于比较忙只写了一些重要的部分