[PyQt вводный учебник] PyQt5 основные элементы управления используют: всплывающие сообщения, пользовательский ввод, диалог файла

   Эта статья описывает реализацию интерфейса PyQt, обычно используемые в диалоговом окне сообщения введите пользователь предоставляет поле ввода, откройте файл получить диалог путь к файлу / каталогу. Перед изучением этих трех элементов управления, в первую очередь думать о главной сцене их использования:

  1, окно сообщения выскакивает. Встречающиеся проблемы и потребности бросить нужно всплывающее окно с сообщением об ошибке, риск может быть вызван реализацией программы требуется всплывающее окно с предупреждением, чтобы подсказать пользователь ли дальнейшая реализация и так далее.

  2, входной ящик пользователя. Такие, как общая программа позволяет пользователю выбрать выполнение ветви, да / нет, и так далее.

  3, диалоговое окно файла. Для полного пути к локальному файлу или папке или даже открывать файлы непосредственно отображать содержимое файла.

  В данной статье рассматривается три сценария для основных элементов управления.

QMessageBox: всплывающие элементы управления диалогового окна

  QMessageBox является универсальным всплывающим окном для отображения сообщения, сообщение позволяет обратную связь с пользователем, нажав на кнопках различных критериев. Есть много типов всплывающего диалогового окна, такие как советы, предупреждение, ошибки, вопросы и так далее диалог. Эти различные типы диалогового окна QMessageBox отображается только когда различные значки, как и любой другой функции.

  Метод, обычно используемый класс QMessageBox

    информация (QWdiget родитель, название, текст, кнопки, DefaultButton): всплывающее окно с сообщением.

    вопрос (QWidget родитель, название, текст, кнопки, DefaultButton): Q & диалоговое окно всплывающего окна

    предупреждение ( QWidget родитель, заголовок, текст, кнопки, то DefaultButton ) : предупреждение диалоговое окно

    Critical ( QWidget родитель, заголовок, текст, кнопки, то DefaultButton ) : серьезная ошибка диалоговое окно выскакивает

    О программе ( QWidget родителя, название, текст ) : О всплывающем диалоге

  Параметры объясняются следующим образом:

    Родитель: Определяет элементы управления родительского окна.

    Название: представляет собой заголовок диалога.

    текст: текст Прямоугольник.

    Кнопки: представляет собой стандартную кнопку множество, кнопка по умолчанию это нормально.

    представление DefaultButton выбрана кнопка стандартной по умолчанию, выберите первую кнопку стандартного по умолчанию.

  Другие методы заключаются в следующем:

    SetTitle (): задать заголовок

    SetText (): установить текстовое сообщение

    SetIcon (): Установить фото диалогового окна всплывающего

  QMessageBox стандартный тип кнопки

    QMessage.Ok соглашается работать, QMessage.Cancel отменить операцию, QMessage.Yes согласился на операцию, QMessage.No отменить операцию, QMessage.Abort прекратить операцию, QMessage.Retry повторить операцию, QMessage.Ignore игнорировать операцию

  Пять обычное окно сообщений и отображение

  (1) диалоговое сообщение, которое сообщает пользователю информацию о советы

    QMessageBox.information (самость, «Информация о строке диалогового окна», «повернуть направо перед местом назначения», QMessageBox.Yes | QMessageBox.No)

  (2) диалоговое окно Вопрос, который сообщает пользователю задавать вопросы о новостях.

  QMessageBox.question (я, «вопрос ящик», «Вы хотите продолжить, чтобы проверить это?», QMessageBox.Yes | QMessageBox.No)

  (3) диалоговое окно с предупреждением о том, что говорит пользователю о необычных сообщений об ошибках.

  QMessageBox.warning(self, "警告对话框", "继续执行会导致系统重启,你确定要继续?", QMessageBox.Yes | QMessageBox.No)

  (4)严重错误对话框,用来告诉用户关于严重的错误消息。

  QMessageBox.critical(self, "严重错误对话框", "数组越界,程序异常退出", QMessageBox.Yes | QMessageBox.No)

 (5)关于对话框

  QMessageBox.about(self, "关于对话框", "你的Windows系统是DOS1.0")

上述程序完整代码如下:

# -*- coding: utf-8 -*-

import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(431, 166)
        self.pushButton = QtWidgets.QPushButton(Form)
        self.pushButton.setGeometry(QtCore.QRect(160, 50, 91, 41))
        font = QtGui.QFont()
        font.setFamily("YaHei Consolas Hybrid")
        font.setPointSize(10)
        self.pushButton.setFont(font)
        self.pushButton.setObjectName("pushButton")

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "对话框"))
        self.pushButton.setText(_translate("Form", "弹出对话框"))

class MyMainForm(QMainWindow, Ui_Form):
    def __init__(self, parent=None):
        super(MyMainForm, self).__init__(parent)
        self.setupUi(self)
        self.pushButton.clicked.connect(self.showMsg)

    def showMsg(self):
        QMessageBox.information(self, '信息提示对话框','前方右拐到达目的地',QMessageBox.Yes | QMessageBox.No,QMessageBox.Yes)
        QMessageBox.question(self, "提问对话框", "你要继续搞测试吗?", QMessageBox.Yes | QMessageBox.No)
        QMessageBox.warning(self, "警告对话框", "继续执行会导致系统重启,你确定要继续?", QMessageBox.Yes | QMessageBox.No)
        QMessageBox.critical(self, "严重错误对话框", "数组越界,程序异常退出", QMessageBox.Yes | QMessageBox.No,)
        QMessageBox.about(self, "关于对话框", "你的Windows系统是DOS1.0")

if __name__ == "__main__":
    app = QApplication(sys.argv)
    myWin = MyMainForm()
    myWin.show()
    sys.exit(app.exec_())

QInputDialog标准对话框控件

  QInputDialog控件是一个标准对话框,用于获取用户输入信息,QInputDialog控件可以提供数字、字符串输入或提供下拉列表选择。

  针对QInputDialog对话框控件的使用,我们主要考虑2个问题:1、如何在弹出对话框供用户输入,2、如何获取用户输入。

  QInputDialog常用方法:

    getint():从控件中获得标准整数输入

    getDouble():从控件中获得标准浮点数输入

    getText():从控件中获得标准字符串的输入

    getItem() :从控件中获得列表里的选项输入

  说明:QInputDialog控件

完整代码如下:

# -*- coding: utf-8 -*-

import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox,QInputDialog

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(382, 190)
        font = QtGui.QFont()
        font.setPointSize(9)
        font.setBold(False)
        font.setWeight(50)
        Form.setFont(font)
        self.GetIntlineEdit = QtWidgets.QLineEdit(Form)
        self.GetIntlineEdit.setGeometry(QtCore.QRect(150, 30, 150, 31))
        self.GetIntlineEdit.setText("")
        self.GetIntlineEdit.setObjectName("GetIntlineEdit")
        self.GetstrlineEdit = QtWidgets.QLineEdit(Form)
        self.GetstrlineEdit.setGeometry(QtCore.QRect(150, 80, 150, 31))
        self.GetstrlineEdit.setObjectName("GetstrlineEdit")
        self.GetItemlineEdit = QtWidgets.QLineEdit(Form)
        self.GetItemlineEdit.setGeometry(QtCore.QRect(150, 130, 150, 31))
        self.GetItemlineEdit.setObjectName("GetItemlineEdit")
        self.getIntButton = QtWidgets.QPushButton(Form)
        self.getIntButton.setGeometry(QtCore.QRect(50, 30, 80, 31))
        self.getIntButton.setObjectName("getIntButton")
        self.getStrButton = QtWidgets.QPushButton(Form)
        self.getStrButton.setGeometry(QtCore.QRect(50, 80, 80, 31))
        self.getStrButton.setObjectName("getStrButton")
        self.getItemButton = QtWidgets.QPushButton(Form)
        self.getItemButton.setGeometry(QtCore.QRect(50, 130, 80, 31))
        self.getItemButton.setObjectName("getItemButton")

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "QInputDialog例子"))
        self.getIntButton.setText(_translate("Form", "获取整数"))
        self.getStrButton.setText(_translate("Form", "获取字符串"))
        self.getItemButton.setText(_translate("Form", "获取列表选项"))

class MyMainForm(QMainWindow, Ui_Form):
    def __init__(self, parent=None):
        super(MyMainForm, self).__init__(parent)
        self.setupUi(self)
        self.getIntButton.clicked.connect(self.getInt)
        self.getStrButton.clicked.connect(self.getStr)
        self.getItemButton.clicked.connect(self.getItem)

    def getInt(self):
        num, ok = QInputDialog.getInt(self, 'Integer input dialog', '输入数字')
        if ok and num:
           self.GetIntlineEdit.setText(str(num))

    def getStr(self):
        text, ok=QInputDialog.getText(self, 'Text Input Dialog', '输入姓名:')
        if ok and text:
            self.GetstrlineEdit.setText(str(text))

    def getItem(self):
        items=('C', 'C++', 'C#', 'JAva', 'Python')
        item, ok=QInputDialog.getItem(self, "select input dialog", '语言列表', items, 0, False)
        if ok and item:
            self.GetItemlineEdit.setText(str(item))

if __name__ == "__main__":
    app = QApplication(sys.argv)
    myWin = MyMainForm()
    myWin.show()
    sys.exit(app.exec_())

关键代码介绍:

  QInputDialog.getInt(self, 'Integer input dialog', '输入数字') -> 输入整数对话框

  QInputDialog.getText(self, 'Text Input Dialog', '输入姓名:') -> 输入字符串对话框

  QInputDialog.getItem(self, "select input dialog", '语言列表', items, 0, False) -> 下拉列表选择对话框

QFileDialog文件对话框

  QFileDialog是用于打开和保存文件的标准对话框。使用QFileDialog控件主要考虑2个场景:使用该控件提供用户选择目录或文件,并保存选择目录或文件的路径。简单说就是实现类似word/Notepad++文件打开功能。如下

   针对上述场景,QFileDialog控件实现的主要方法

    QFileDialog.getOpenFileName():获取单个文件路径

    QFileDialog.getOpenFileNames():获取多个文件路径

    QFileDialog.getExistingDirectory():获取文件夹路径

完整代码如下:

# -*- coding: utf-8 -*-

import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox,QInputDialog,QFileDialog

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(443, 120)
        self.widget = QtWidgets.QWidget(Form)
        self.widget.setGeometry(QtCore.QRect(50, 40, 301, 25))
        self.widget.setObjectName("widget")
        self.horizontalLayout = QtWidgets.QHBoxLayout(self.widget)
        self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.openFileButton = QtWidgets.QPushButton(self.widget)
        self.openFileButton.setObjectName("openFileButton")
        self.horizontalLayout.addWidget(self.openFileButton)
        self.filePathlineEdit = QtWidgets.QLineEdit(self.widget)
        self.filePathlineEdit.setObjectName("filePathlineEdit")
        self.horizontalLayout.addWidget(self.filePathlineEdit)

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "QFileDialog打开文件例子"))
        self.openFileButton.setText(_translate("Form", "打开文件"))

class MyMainForm(QMainWindow, Ui_Form):
    def __init__(self, parent=None):
        super(MyMainForm, self).__init__(parent)
        self.setupUi(self)
        self.openFileButton.clicked.connect(self.openFile)

    def openFile(self):
        get_directory_path = QFileDialog.getExistingDirectory(self,
                                    "选取指定文件夹",
                                    "C:/")
        self.filePathlineEdit.setText(str(get_directory_path))

        get_filename_path, ok = QFileDialog.getOpenFileName(self,
                                    "选取单个文件",
                                   "C:/",
                                    "All Files (*);;Text Files (*.txt)")
        if ok:
            self.filePathlineEdit.setText(str(get_filename_path))

        get_filenames_path, ok = QFileDialog.getOpenFileNames(self,
                                    "选取多个文件",
                                   "C:/",
                                    "All Files (*);;Text Files (*.txt)")
        if ok:
            self.filePathlineEdit.setText(str(' '.join(get_filenames_path)))

if __name__ == "__main__":
    app = QApplication(sys.argv)
    myWin = MyMainForm()
    myWin.show()
    sys.exit(app.exec_())

 关键代码介绍

    QFileDialog.getOpenFileName(self,"选取单个文件","C:/","All Files (*);;Text Files (*.txt)") -> 获取单个指定文件的绝对路径

   getOpenFileName()参数说明:

   第1个参数:用于指定父组件

   第2个参数:对话框标题

   第3个参数:对话框显示时默认打开的目录。"."表示当前程序所在目录,“/”表示当前盘下的根目录。

    第4个参数:对话框中文件扩展名过滤器。All Files (*);;Text Files (*.txt)表示可以选择所有文件类型或者只显示.txt后缀的文件类型。

  QFileDialog.getExistingDirectory(self,"选取指定文件夹","C:/") -> 获取指定文件夹的绝对路径

  QFileDialog.getOpenFileNames(self,"选取多个文件","C:/","All Files (*);;Text Files (*.txt)") -> 获取多个指定文件的绝对路径

小结

  本文介绍了消息弹出对话框、用户输入对话框以及文件打开对话框的基本使用方法。内容覆盖了这三类控件的基本使用场景。可以开始动手尝试了。。

рекомендация

отwww.cnblogs.com/linyfeng/p/11223711.html