• QDialog、QMessageBox、QColorDialog、QFileDialog、QFontDialog、QInputDialog


    QDialog

    '''
    
    对话框:QDialog
    
    QMessageBox
    QColorDialog
    QFileDialog
    QFontDialog
    QInputDialog
    
    QMainWindow
    QWidget
    QDialog
    
    '''
    
    import sys
    from PyQt5.QtCore import *
    from PyQt5.QtGui import *
    from PyQt5.QtWidgets import *
    class QDialogDemo(QMainWindow):
        def __init__(self):
            super(QDialogDemo,self).__init__()
            self.initUI()
    
        def initUI(self):
            self.setWindowTitle('QDialog案例')
            self.resize(300,200)
    
            self.button = QPushButton(self)
            self.button.setText('弹出对话框')
            self.button.move(50,50)
            self.button.clicked.connect(self.showDialog)
    
        def showDialog(self):
            dialog = QDialog()
            button = QPushButton('确定',dialog)
            button.clicked.connect(dialog.close)
            button.move(50,50)
            dialog.setWindowTitle('对话框')
            dialog.setWindowModality(Qt.ApplicationModal)
    
            dialog.exec()
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        main = QDialogDemo()
        main.show()
        sys.exit(app.exec_())
    
    
    

    image

    QMessageBox
    '''
    
    消息对话框:QMessageBox
    
    
    1. 关于对话框
    2. 错误对话框
    3. 警告对话框
    4. 提问对话框
    5. 消息对话框
    
    
    有2点差异
    1. 显示的对话框图标可能不同
    2. 显示的按钮是不一样的
    
    '''
    import sys
    from PyQt5.QtCore import *
    from PyQt5.QtGui import *
    from PyQt5.QtWidgets import *
    class QMessageBoxDemo(QWidget):
        def __init__(self):
            super(QMessageBoxDemo,self).__init__()
            self.initUI()
        def initUI(self):
            self.setWindowTitle('QMessageBox案例')
            self.resize(300,400)
    
            layout = QVBoxLayout()
            self.button1 = QPushButton()
            self.button1.setText('显示关于对话框')
            self.button1.clicked.connect(self.showDialog)
    
            self.button2 = QPushButton()
            self.button2.setText('显示消息对话框')
            self.button2.clicked.connect(self.showDialog)
    
            self.button3 = QPushButton()
            self.button3.setText('显示警告对话框')
            self.button3.clicked.connect(self.showDialog)
    
    
            self.button4 = QPushButton()
            self.button4.setText('显示错误对话框')
            self.button4.clicked.connect(self.showDialog)
    
            self.button5 = QPushButton()
            self.button5.setText('显示提问对话框')
            self.button5.clicked.connect(self.showDialog)
    
    
            layout.addWidget(self.button1)
            layout.addWidget(self.button2)
            layout.addWidget(self.button3)
            layout.addWidget(self.button4)
            layout.addWidget(self.button5)
            self.setLayout(layout)
    
        def showDialog(self):
            text = self.sender().text()
            if text == '显示关于对话框':
                QMessageBox.about(self,'关于','这是一个关于对话框')
            elif text == '显示消息对话框':
                reply = QMessageBox.information(self,'消息','这是一个消息对话框', QMessageBox.Yes | QMessageBox.No,QMessageBox.Yes)
                print(reply == QMessageBox.Yes)
            elif text == '显示警告对话框':
                QMessageBox.warning(self,'警告','这是一个警告对话框',QMessageBox.Yes | QMessageBox.No,QMessageBox.Yes)
            elif text == '显示错误对话框':
                QMessageBox.critical(self,'警告','这是一个警告对话框',QMessageBox.Yes | QMessageBox.No,QMessageBox.Yes)
            elif text == '显示提问对话框':
                QMessageBox.question(self,'警告','这是一个警告对话框',QMessageBox.Yes | QMessageBox.No,QMessageBox.Yes)
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        main = QMessageBoxDemo()
        main.show()
        sys.exit(app.exec_())

    image

    QFontDialog
    '''
    
    字体对话框:QFontDialog
    
    
    
    '''
    
    import sys
    from PyQt5.QtCore import *
    from PyQt5.QtGui import *
    from PyQt5.QtWidgets import *
    class QFontDialogDemo(QWidget):
        def __init__(self):
            super(QFontDialogDemo,self).__init__()
            self.initUI()
    
        def initUI(self):
            self.setWindowTitle('Font Dialog例子')
            layout = QVBoxLayout()
            self.fontButton = QPushButton('选择字体')
            self.fontButton.clicked.connect(self.getFont)
            layout.addWidget(self.fontButton)
    
            self.fontLabel = QLabel('Hello,测试字体例子')
            layout.addWidget(self.fontLabel)
    
            self.setLayout(layout)
        def getFont(self):
            font, ok = QFontDialog.getFont()
            if ok :
                self.fontLabel.setFont(font)
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        main = QFontDialogDemo()
        main.show()
        sys.exit(app.exec_())
    
    
    
    image
    QColorDialog
    '''
    
    颜色对话框:QColorDialog
    
    '''
    
    '''
    
    字体对话框:QFontDialog
    
    
    
    '''
    
    import sys
    from PyQt5.QtCore import *
    from PyQt5.QtGui import *
    from PyQt5.QtWidgets import *
    class QColorDialogDemo(QWidget):
        def __init__(self):
            super(QColorDialogDemo,self).__init__()
            self.initUI()
    
        def initUI(self):
            self.setWindowTitle('Color Dialog例子')
            layout = QVBoxLayout()
            self.colorButton = QPushButton('设置颜色')
            self.colorButton.clicked.connect(self.getColor)
            layout.addWidget(self.colorButton)
    
            self.colorButton1 = QPushButton('设置背景颜色')
            self.colorButton1.clicked.connect(self.getBGColor)
            layout.addWidget(self.colorButton1)
    
            self.colorLabel = QLabel('Hello,测试颜色例子')
            layout.addWidget(self.colorLabel)
    
            self.setLayout(layout)
        def getColor(self):
            color = QColorDialog.getColor()
            p = QPalette()
            p.setColor(QPalette.WindowText,color)
            self.colorLabel.setPalette(p)
        def getBGColor(self):
            color = QColorDialog.getColor()
            p = QPalette()
            p.setColor(QPalette.Window,color)
            self.colorLabel.setAutoFillBackground(True)
            self.colorLabel.setPalette(p)
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        main = QColorDialogDemo()
        main.show()
        sys.exit(app.exec_())
    
    

    image

    QFileDialog
    '''
    
    文件对话框:QFileDialog
    
    '''
    
    import sys
    from PyQt5.QtCore import *
    from PyQt5.QtGui import *
    from PyQt5.QtWidgets import *
    class QFileDialogDemo(QWidget):
        def __init__(self):
            super(QFileDialogDemo,self).__init__()
            self.initUI()
    
        def initUI(self):
            layout = QVBoxLayout()
            self.button1 = QPushButton('加载图片')
            self.button1.clicked.connect(self.loadImage)
            layout.addWidget(self.button1)
    
            self.imageLabel = QLabel()
            layout.addWidget(self.imageLabel)
    
            self.button2 = QPushButton('加载文本文件')
            self.button2.clicked.connect(self.loadText)
            layout.addWidget(self.button2)
    
            self.contents = QTextEdit()
            layout.addWidget(self.contents)
    
            self.setLayout(layout)
            self.setWindowTitle('文件对话框演示 ')
    
        def loadImage(self):
            fname,_ = QFileDialog.getOpenFileName(self,'打开文件','.','图像文件(*.jpg *.png)')
            self.imageLabel.setPixmap(QPixmap(fname))
    
        def loadText(self):
            dialog = QFileDialog()
            dialog.setFileMode(QFileDialog.AnyFile)
            dialog.setFilter(QDir.Files)
    
            if dialog.exec():
                filenames = dialog.selectedFiles()
                f = open(filenames[0],encoding='utf-8',mode='r')
                with f:
                    data = f.read()
                    self.contents.setText(data)
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        main = QFileDialogDemo()
        main.show()
        sys.exit(app.exec_())

    image

    QInputDialog
    '''
    
    输入对话框:QInputDialog
    
    QInputDialog.getItem
    QInputDialog.getText
    QInputDialog.getInt
    
    '''
    
    import sys
    from PyQt5.QtCore import *
    from PyQt5.QtGui import *
    from PyQt5.QtWidgets import *
    class QInputDialogDemo(QWidget):
        def __init__(self):
            super(QInputDialogDemo,self).__init__()
            self.initUI()
    
        def initUI(self):
            self.setWindowTitle('输入对话框')
            layout = QFormLayout()
    
            self.button1 = QPushButton('获取列表中的选项')
            self.button1.clicked.connect(self.getItem)
            self.lineEdit1 = QLineEdit()
            layout.addRow(self.button1, self.lineEdit1)
    
            self.button2 = QPushButton('获取字符串')
            self.button2.clicked.connect(self.getText)
            self.lineEdit2 = QLineEdit()
            layout.addRow(self.button2, self.lineEdit2)
    
            self.button3 = QPushButton('获取整数')
            self.button3.clicked.connect(self.getInt)
            self.lineEdit3 = QLineEdit()
            layout.addRow(self.button3, self.lineEdit3)
    
            self.setLayout(layout)
    
        def getItem(self):
            items = ('C','C++','Ruby','Python','Java')
            item, ok =QInputDialog.getItem(self,'请选择编程语言','语言列表',items)
            if ok and item:
                self.lineEdit1.setText(item)
        def getText(self):
            text, ok =QInputDialog.getText(self,'文本输入框','输入姓名')
            if ok and text:
                self.lineEdit2.setText(text)
        def getInt(self):
            num, ok =QInputDialog.getInt(self,'整数输入框','输入数字')
            if ok and num:
                self.lineEdit3.setText(str(num))
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        main = QInputDialogDemo()
        main.show()
        sys.exit(app.exec_())
    
    image
    天道酬勤 循序渐进 技压群雄
  • 相关阅读:
    管理培训笔记
    Jhipster Registry(Eureka Server) Docker双向联通与高可用部署
    (转阮一峰)深入理解OAuth 2.0
    基于spring security 实现前后端分离项目权限控制
    spring security实现动态配置url权限的两种方法
    Spring Security 架构与源码分析
    开源APM系统skywalking介绍与使用
    Angular 中后台前端解决方案
    SpringBoot+Security+MyBatis+ES+MQ+Redis+Docker+Vue的电商系统
    Jenkins+GitLab+Docker+SpringCloud实现可持续自动化微服务
  • 原文地址:https://www.cnblogs.com/wuyuan2011woaini/p/14821871.html
Copyright © 2020-2023  润新知