• PyQt5 QDialog对话框(QMessageBox,QInputDialog,QFontDialog,QFileDialog,QColorDialog)


    QDialog类图

    在这里插入图片描述

    QDialog

    import sys
    from PyQt5.QtGui import *
    from PyQt5.QtCore import *
    from PyQt5.QtWidgets import *
    from PyQt5.QtCore import Qt
    
    class MyDialogWindow(QMainWindow):
        def __init__(self, parent=None):
            super(MyDialogWindow, self).__init__(parent)
            self.setWindowTitle("Dialog Demo")
            self.resize(350, 300)
    
            self.btn = QPushButton(self)
            self.btn.setText("弹出对话框")
            self.btn.move(50, 50)
            self.btn.clicked.connect(self.showdialog)
    
        def showdialog(self):
            dialog = QDialog()
            btn = QPushButton("OK" ,dialog)
            btn.move(50, 50)
            dialog.setWindowTitle("Dialog")
            dialog.setWindowModality(Qt.ApplicationModal)
            dialog.exec_()
    
    if __name__ == "__main__":
        app = QApplication(sys.argv)
        win = MyDialogWindow()
        win.show()
        sys.exit(app.exec_())
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    在这里插入图片描述

    QMessageBox

    import sys
    from PyQt5.QtGui import *
    from PyQt5.QtCore import *
    from PyQt5.QtWidgets import *
    from PyQt5.QtCore import Qt
    
    class MyMessageBox(QWidget):
        def __init__(self):
            super(MyMessageBox, self).__init__()
            self.setWindowTitle("QMessageBox Demo")
            self.resize(300, 300)
    
            layout = QVBoxLayout()
            self.btn1 = QPushButton()
            self.btn1.setText("弹出信息消息框")
            self.btn1.clicked.connect(lambda:self.showmessagebox(1))
            layout.addWidget(self.btn1)
    
            self.btn2 = QPushButton("弹出问答消息框", self)
            self.btn2.clicked.connect(lambda:self.showmessagebox(2))
            layout.addWidget(self.btn2)
    
            self.btn3 = QPushButton("弹出警告消息框", self)
            self.btn3.clicked.connect(lambda:self.showmessagebox(3))
            layout.addWidget(self.btn3)
    
            self.btn4 = QPushButton("弹出严重错误框", self)
            self.btn4.clicked.connect(lambda:self.showmessagebox(4))
            layout.addWidget(self.btn4)
    
            self.btn5 = QPushButton("弹出关于消息框", self)
            self.btn5.clicked.connect(lambda:self.showmessagebox(5))
            layout.addWidget(self.btn5)
    
            self.setLayout(layout)
    
        def showmessagebox(self, index):
            if index == 1:
                reply = QMessageBox.information(self, "信息标题", "信息消息正文", QMessageBox.Yes|QMessageBox.No, QMessageBox.Yes)
                print(reply)
            elif index == 2:
                reply = QMessageBox.question(self, "问答标题", "问答消息文本", QMessageBox.Ok|QMessageBox.Cancel, QMessageBox.Ok)
                print(reply)
            elif index == 3:
                reply =QMessageBox.warning(self, "警告标题", "警告消息内容", QMessageBox.Ok|QMessageBox.Cancel, QMessageBox.Ok)
                print(reply)
            elif index == 4:
                reply = QMessageBox.critical(self, "严重标题","严重错误消息内容", QMessageBox.Yes|QMessageBox.No, QMessageBox.Yes)
                print(reply)
            elif index == 5:
                reply = QMessageBox.about(self, "关于标题", "关于消息对话框文本")
                print(reply)
    
                
    if __name__ == "__main__":
        app = QApplication(sys.argv)
        win = MyMessageBox()
        win.show()
        sys.exit(app.exec_())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59

    在这里插入图片描述

    QInputDialog

    import sys
    from PyQt5.QtGui import *
    from PyQt5.QtCore import *
    from PyQt5.QtWidgets import *
    from PyQt5.QtCore import Qt
    
    class MyInputDialogWindow(QWidget):
        def __init__(self, parent=None):
            super(MyInputDialogWindow, self).__init__(parent)
            
            layout = QFormLayout()
    
            self.btn1 = QPushButton("获得列表里的选项")
            self.btn1.clicked.connect(self.getItem)
            self.le1 = QLineEdit()
            layout.addRow(self.btn1, self.le1)
    
            self.btn2 = QPushButton("获得字符串")
            self.btn2.clicked.connect(self.getText)
            self.le2 = QLineEdit()
            layout.addRow(self.btn2, self.le2)
    
            self.btn3 = QPushButton("获得整数")
            self.btn3.clicked.connect(self.getInt)
            self.le3 = QLineEdit()
            layout.addRow(self.btn3, self.le3)
    
            self.btn4 = QPushButton("获得浮点数")
            self.btn4.clicked.connect(self.getDouble)
            self.le4 = QLineEdit()
            layout.addRow(self.btn4, self.le4)
            
            self.setLayout(layout)
            self.resize(350, 300)
            self.setWindowTitle("QInputDialog Demo")
            
            
        def getItem(self):
            items = ("C", "C++", "Java", "Python", "C#")
            item, ok = QInputDialog.getItem(self, "select input dialog", "语言列表", items, 0, False)
            if ok and item:
                self.le1.setText(item)
    
        def getText(self):
            text, ok = QInputDialog.getText(self, 'Text Input Dialog', '输入姓名:')
            if ok:
                self.le2.setText(str(text))
    
        def getInt(self):
            num,ok = QInputDialog.getInt(self, "integer input dialog", "输入数字")
            if ok:
                self.le3.setText(str(num))
        def getDouble(self):
            num,ok = QInputDialog.getDouble(self, "double input dialog", "输入浮点数")
            if ok:
                self.le4.setText(str(num))
    
        
    if __name__ == "__main__":
        app = QApplication(sys.argv)
        win = MyInputDialogWindow()
        win.show()
        sys.exit(app.exec_())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63

    在这里插入图片描述

    QFontDialog

    import sys
    from PyQt5.QtGui import *
    from PyQt5.QtCore import *
    from PyQt5.QtWidgets import *
    from PyQt5.QtCore import Qt
    
    class MyFontDialogDemo(QWidget):
        def __init__(self, parent=None):
            super(MyFontDialogDemo, self).__init__(parent)
            layout = QVBoxLayout()
            self.fontButton = QPushButton("选择字体")
            self.fontButton.clicked.connect(self.getFont)
            layout.addWidget(self.fontButton)
            self.fontLineEdit = QLabel("Hello,测试字体Demo")
            layout.addWidget(self.fontLineEdit)
            self.setLayout(layout)
            self.setWindowTitle("Font Dialog Demo")
    
        def getFont(self):
            font, ok = QFontDialog.getFont()
            if ok:
                self.fontLineEdit.setFont(font)
    
    if __name__ == "__main__":
        app = QApplication(sys.argv)
        win = MyFontDialogDemo()
        win.show()
        sys.exit(app.exec_())
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    在这里插入图片描述

    QFileDialog

    import sys
    
    from PyQt5.QtGui import *
    from PyQt5.QtCore import *
    from PyQt5.QtWidgets import *
    from PyQt5.QtCore import Qt
    
    class filedialogDemo(QWidget):
        def __init__(self, parent=None):
            super(filedialogDemo, self).__init__(parent)
            layout = QVBoxLayout()
            self.btn = QPushButton("加载图片")
            self.btn.clicked.connect(self.getfile)
            layout.addWidget(self.btn)
            self.le = QLabel("")
            layout.addWidget(self.le)
            self.btn1 = QPushButton("加载文本文件")
            self.btn1.clicked.connect(self.getfiles)
            layout.addWidget(self.btn1)
            self.contents = QTextEdit()
            layout.addWidget(self.contents)
            self.setLayout(layout)
            self.setWindowTitle("File Dialog Demo")
            
        def getfile(self):
            fname, aa = QFileDialog.getOpenFileName(self, 'Open file', 'C:\\', "Image files (*.jpg *.gif)")
            self.le.setPixmap(QPixmap(fname))
        
        def getfiles(self):
            dlg = QFileDialog()
            dlg.setFileMode(QFileDialog.AnyFile)
            dlg.setFilter(QDir.Files)
            if dlg.exec_():
                filenames = dlg.selectedFiles()
                f = open(filenames[0], 'r')
                with f:
                    data = f.read()
                    self.contents.setText(data)
                    f.close()
                    
    if __name__ == "__main__":
        app = QApplication(sys.argv)
        win = filedialogDemo()
        win.show()
        sys.exit(app.exec_())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45

    在这里插入图片描述

    QColorDialog

    import sys
    from PyQt5.QtGui import *
    from PyQt5.QtCore import *
    from PyQt5.QtWidgets import *
    from PyQt5.QtCore import Qt
    
    class MyColorDialogWindow(QWidget):
        def __init__(self, parent=None):
            super(MyColorDialogWindow, self).__init__(parent)
    
            self.palette = QPalette()
            layout = QVBoxLayout()
            self.btn1 = QPushButton("设置背景颜色")
            self.btn1.clicked.connect(self.onSetBgColorClicked)
            layout.addWidget(self.btn1)
    
            self.btn2 = QPushButton("设置文本颜色")
            self.btn2.clicked.connect(self.onSetTxtColorClicked)
            layout.addWidget(self.btn2)
    
            self.label = QLabel("测试文本内容")
            self.label.setFixedSize(150, 50)
            self.label.setAlignment(Qt.AlignCenter)
            layout.addWidget(self.label)
    
            self.resize(380, 150)
            self.setWindowTitle("QColorDialog Demo")
            self.setLayout(layout)
    
        def onSetBgColorClicked(self):
            color = QColorDialog.getColor()
            self.palette.setColor(QPalette.Window, color)
            self.label.setAutoFillBackground(True)
            self.label.setPalette(self.palette)
            
        def onSetTxtColorClicked(self):
            color = QColorDialog.getColor()
            r,g,b,_ = color.getRgb()
            self.label.setStyleSheet("color:rgb({},{},{},255)".format(r,g,b))
    
            #self.palette.setColor(QPalette.WindowText, color)
            #self.label.setPalette(self.palette)
    
    if __name__ == "__main__":
        app = QApplication(sys.argv)
        win = MyColorDialogWindow()
        win.show()
        sys.exit(app.exec_())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48

    在这里插入图片描述

  • 相关阅读:
    Grafana+Prometheus打造运维监控系统(二)-数据获取篇-node_exporter
    羧酸-COOH功能化修饰红色荧光聚苯乙烯AIE微球的产品组成和保存条件
    展商企业【广东伟创科技开发有限公司】| 2024水科技大会暨技术装备成果展
    怎么处理zk或redis脑裂
    产品经理必看!提升效率的9款工具盘点,你都用过哪些?
    CSS入门基础学习(中)
    递归:x的n次幂
    在Spring Boot项目中使用JPA
    开源医疗大模型Llama3-Aloe-8B-Alpha,性能超越 MedAlpaca 和 PMC-LLaMA
    【Pytorch实用教程】nn.LogSoftmax的详细用法及公式
  • 原文地址:https://blog.csdn.net/u013420428/article/details/127978404