美文网首页
PyQt5学习笔记13 - QDialog & QMessage

PyQt5学习笔记13 - QDialog & QMessage

作者: 庄周幻梦 | 来源:发表于2021-05-05 19:51 被阅读0次

    前文

    PyQt5学习笔记8 - QTextEdit
    PyQt5学习笔记9 - QPushButton & QRadioButton
    PyQt5学习笔记10 - QCheckBox & QComboBox
    PyQt5学习笔记11 - QSpinBox & QSlider
    PyQt5学习笔记12 - QMenubar & QStatusBar


    QDialog


    为了更好地实现人机交互,比如Windows和Linux等系统均会提供一系列的标准对话框来完成特定场景下的功能,如选择字号大小,字体颜色等。在PyQt5中定义了一系列的标准对话框,让使用者能够方便和快捷地通过各个类完成字号大小,字体颜色以及文件的选择等。

    QDialog类的子类主要有QMessageBox, QFileDialog, QFontDialog, QInputDialog等。

    QDialog类的常用方法

    方法 描述
    setWindowTitle() 设置对话框标题
    setWindowModality() 设置窗口模态,取值如下:
    - Qt.NonModal, 非模态,可以和程序其他窗口交互
    - Qt.WindowModal, 窗口模态,程序在未处理当前对话框时,将阻止和对话框的父窗口进行交互
    - Qt.ApplicationModel,应用程序模态,阻止和任何其他窗口进行交互



    实例1: Dialog的使用

    import sys
    
    from PyQt5.QtCore import Qt
    from PyQt5.QtWidgets import QMainWindow, QPushButton, QDialog, QApplication
    
    
    class DialogDemo(QMainWindow):
    
        def __init__(self, parent=None):
            super(DialogDemo, self).__init__(parent)
            self.setWindowTitle('DialogDemo')
            self.resize(400, 240)
    
            self.button1 = QPushButton(self)
            self.button1.setText('弹出对话框')
            self.button1.move(50, 50)
            self.button1.clicked.connect(self.show_dialog)
    
        @staticmethod
        def show_dialog():
            dialog = QDialog()
            button2 = QPushButton("OK", dialog)
            button2.move(50, 50)
            dialog.setWindowTitle('Dialog For OK')
            dialog.setWindowModality(Qt.ApplicationModal)
            dialog.exec()
    
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        demo = DialogDemo()
        demo.show()
        sys.exit(app.exec())
    
    image.png

    QMessageBox

    QMessageBox是一种通用的弹出式对话框。允许用户通过单击不同的标准按钮对消息进行反馈,每个标准按钮都有一个预定义的文本,角色和十六进制数。

    QMessageBox常用的方法

    方法 描述
    infromation(parent, title, text, buttons, defaultButton) 弹出消息对话框,各参数解释如下:
    - parent, 指定父容器
    - title, 对话框标题
    - text, 对话框文本
    - buttons, 多个标准按钮,默认为OK按钮
    - defaultButton, 默认选中的按钮,默认是第一个标准按钮
    question(parent, title, text, buttons, defaultButton) 弹出问答对话框
    warning(parent, title, text, buttons, defaultButton) 弹出警告对话框
    ctitical(parent, title, text, buttons, defaultButton) 弹出严重错误对话框
    about(parent, title, text) 弹出关于对话框
    setTitle() 设置标题
    setText() 设置消息正文
    setIcon() 设置弹出对话框的图片



    QMessage标准按钮类型

    类型 描述
    QMessage.Ok 同意操作
    QMessage.Cancel 取消操作
    QMessage.Yes 同意操作
    QMessage.No 取消操作
    QMessage.Abort 终止操作
    QMessage.Retry 重试操作
    QMessage.Ignore 忽略操作

    QMessageBox 实例

    import sys
    
    from PyQt5.QtWidgets import QWidget, QPushButton, QMessageBox, QApplication
    
    
    class MessageDemo(QWidget):
        def __init__(self):
            super(MessageDemo, self).__init__()
            self.resize(300, 100)
    
            self.button = QPushButton(self)
            self.button.setText('点击弹出消息弹窗')
            self.button.clicked.connect(self.show_message)
    
        def show_message(self):
            reply = QMessageBox.information(self, 'Title', 'Message content', QMessageBox.Yes | QMessageBox.No,
                                            QMessageBox.No)
            print(reply)
    
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        demo = MessageDemo()
        demo.show()
        sys.exit(app.exec())
    
    image.png

    QInputDialog

    QInputDialog控件是一个标准对话框,由一个文本框和两个按钮(OK 按钮和Cancel 按钮)组成。当用户单击OK按钮或按Enter键后,在父窗口可以手机通过QInputDialog控件输入的信息。QInputDialog控件是QDialog标准对话框的一部分。

    QInputDialog 常用方法

    方法 描述
    getInt() 从控件获得标准整数输入
    getDouble() 从控件获得标准浮点数输入
    getText() 从控件获得标准字符输入
    getItem() 从控件获得列表里的选项输入

    实例:QInputDialog的使用

    import sys
    
    from PyQt5.QtWidgets import QWidget, QFormLayout, QPushButton, QLineEdit, QInputDialog, QApplication
    
    
    class InputDialogDemo(QWidget):
        def __init__(self, parent=None):
            super(InputDialogDemo, self).__init__(parent)
    
            layout = QFormLayout()
    
            self.button_1 = QPushButton('获得列表里的选项')
            self.line_1 = QLineEdit()
    
            self.button_2 = QPushButton('获得字符串')
            self.line_2 = QLineEdit()
    
            self.button_3 = QPushButton('获得整数')
            self.line_3 = QLineEdit()
    
            self.button_1.clicked.connect(self.get_item)
            self.button_2.clicked.connect(self.get_text)
            self.button_3.clicked.connect(self.get_int)
    
            layout.addRow(self.button_1, self.line_1)
            layout.addRow(self.button_2, self.line_2)
            layout.addRow(self.button_3, self.line_3)
            self.setLayout(layout)
    
            self.setWindowTitle('InputDialogDemo')
    
        def get_item(self):
            items = ('C', 'C++', 'Java', 'Python')
            item, ok = QInputDialog.getItem(self, 'Select Input Dialog', 'language list', items, 0, False)
            if ok and items:
                self.line_1.setText(item)
    
        def get_text(self):
            text, ok = QInputDialog.getText(self, 'Text Input Dialog', 'Input Name')
            if ok:
                self.line_2.setText(str(text))
    
        def get_int(self):
            num, ok = QInputDialog.getInt(self, 'Integer Input Dialog', 'Input Number')
            if ok:
                self.line_3.setText(str(num))
    
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        demo = InputDialogDemo()
        demo.show()
        sys.exit(app.exec())
    
    image.png

    QFontDialog

    QFontDialog 控件时一个常用的字体选择对话框,可以让用户选择所显示文本的字号大小,样式和格式。QFontDialog是QDialog标准对话框的一部分。使用QFontDialog类的静态方法getFont(), 可以从字体选择对话框中选择文本的显示字号大小,样式和格式。

    QFontDialog的使用

    import sys
    
    from PyQt5.QtWidgets import QWidget, QVBoxLayout, QPushButton, QFontDialog, QLabel, QApplication
    
    
    class FontDialogDemo(QWidget):
        def __init__(self, parent=None):
            super(FontDialogDemo, self).__init__(parent)
            self.setWindowTitle('FontDialogDemo')
    
            layout = QVBoxLayout()
    
            self.button_font = QPushButton("Choose Font")
            self.button_font.clicked.connect(self.get_font)
    
            self.label_font = QLabel("Font Demo")
    
            layout.addWidget(self.button_font)
            layout.addWidget(self.label_font)
            self.setLayout(layout)
    
        def get_font(self):
            font, ok = QFontDialog.getFont()
            if ok:
                self.label_font.setFont(font)
    
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        demo = FontDialogDemo()
        demo.show()
        sys.exit(app.exec())
    
    
    image.png

    QFileDialog

    QFileDialog 是用于打开和保存文件的标准对话框。QFileDialog 类继承自QDialog类。

    QFileDialog在打开文件的时可以使用文件过滤器,用于显示指定扩展名的文件。

    QFileDialog 常用方法

    方法 描述
    getOpenFileName() 返回用户所选择的文件,并且打开该文件
    getSaveFileName() 使用用户选择的文件名并保存文件
    setFileMode 可以选择的文件类型,通常有
    - QFileDialog.AnyFile, 任何文件
    - QFileDialog.ExistingFile, 已存在的文件
    - QFileDialog.Directory, 文件目录
    - QFileDialog.ExistingFiles, 已经存在的多个文件
    setFilter() 设置过滤器,只显示过滤器允许的文件类型

    实例:QFileDialog的使用

    import sys
    
    from PyQt5.QtCore import QDir
    from PyQt5.QtGui import QPixmap
    from PyQt5.QtWidgets import QWidget, QVBoxLayout, QPushButton, QLabel, QTextEdit, QFileDialog, QApplication
    
    
    class FileDialog(QWidget):
    
        def __init__(self, parent=None):
            super(FileDialog, self).__init__(parent)
    
            layout = QVBoxLayout()
            self.button = QPushButton('加载图片')
            self.button.clicked.connect(self.get_file)
    
            self.label = QLabel('')
    
            self.button_1 = QPushButton('加载文本文件')
            self.button_1.clicked.connect(self.get_files)
    
            self.text_edit = QTextEdit()
    
            layout.addWidget(self.button)
            layout.addWidget(self.label)
            layout.addWidget(self.button_1)
            layout.addWidget(self.text_edit)
    
            self.setLayout(layout)
    
        def get_file(self):
            file_name, _ = QFileDialog.getOpenFileName(self, 'Open file', 'C:\\', 'Image File (*.jpg *.gif)')
            self.label.setPixmap(QPixmap(file_name))
    
        def get_files(self):
            files_dialog = QFileDialog()
            files_dialog.setFileMode(QFileDialog.AnyFile)
            files_dialog.setFilter(QDir.Files)
    
            if files_dialog.exec():
                file_names = files_dialog.selectedFiles()
                f = open(file_names[0], 'r')
                with f:
                    data = f.read()
                    self.text_edit.setText(data)
    
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        demo = FileDialog()
        demo.show()
        sys.exit(app.exec())
    
    image.png



    如有侵权,请联系删除

    相关文章

      网友评论

          本文标题:PyQt5学习笔记13 - QDialog & QMessage

          本文链接:https://www.haomeiwen.com/subject/opdldltx.html