zoukankan      html  css  js  c++  java
  • 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()  #返回自定义颜色的格数
            #16
            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 默认文本
            #返回值:('塘沽五中
    lm', 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_())

    天子骄龙

  • 相关阅读:
    hdu1251统计难题(trie树)
    线段树
    poj2632Crashing Robots
    UVA10194 Football (aka Soccer)
    hdu1166敌兵布阵(线段树)
    【洛谷P3810】【模板】三维偏序(陌上花开)
    【洛谷P2480】古代猪文
    【洛谷P3449】PALPalindromes
    【洛谷P4777】扩展中国剩余定理(EXCRT)
    【洛谷P2421】荒岛野人
  • 原文地址:https://www.cnblogs.com/liming19680104/p/10417506.html
Copyright © 2011-2022 走看看