美文网首页
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