Шаг 262.
Библиотека PyQt5.
Диалоговые окна. Класс QFileDialog. Окно для сохранения файла

    На этом шаге мы рассмотрим cоздание окна для сохранения файла.

    Окно для сохранения файла реализуется статическими методами getSaveFileName() и getSaveFileUrl(). Форматы методов:

  getSaveFileName([parent=None][, caption=""] [, directory=""] [,
    filter=""][, initialFilter=""][, options=0]) 
  getSaveFileUrl([parent=None][, caption=""] [, directory=""] [,
    filter=""][, initialFilter=""][, options=0]) 

    В параметре parent указывается ссылка на родительское окно или значение None. Необязательный параметр caption задает текст заголовка окна, параметр directory - текущий каталог, параметр filter - фильтр, параметр initialFilter - фильтр, который будет выбран изначально, а параметр options устанавливает опции (см. описание метода setOption() на 259 шаге). Метод getSaveFileName() возвращает кортеж из двух элементов: первым элементом будет выбранный файл или пустая строка, вторым - выбранный фильтр. Метод getSaveFileUrl() также возвращает кортеж из двух элементов: первый - экземпляр класса QUrl с путем выбранного файла или пустой экземпляр, второй - выбранный фильтр. Пример:

# -*- coding: utf-8 -*-
from PyQt5 import QtWidgets, QtCore
import sys


def on_clicked():
    file = QtWidgets.QFileDialog.getSaveFileName(parent=None, caption="Заголовок окна", 
          directory="c:\\Python34", 
          filter="All (*);;py (*.py *.pyw)", 
          initialFilter="py (*.py *.pyw)")
    fileName = file[0]
    if fileName != "":
        lineEdit1.setText(fileName)


def on_clicked_url():
    file = QtWidgets.QFileDialog.getSaveFileUrl(parent=None, caption="Заголовок окна", 
         directory="file:///c:\\Python34", 
          filter="All (*);;py (*.py *.pyw)", 
          initialFilter="py (*.py *.pyw)")
    fileName = file[0].toLocalFile()
    if fileName != "":
        lineEdit2.setText(fileName)


app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QWidget()          # Родительский компонент - окно
window.setWindowTitle("Сохранение файла")
# Назначаем обработчиками функции
button1 = QtWidgets.QPushButton("Строка")
lineEdit1 = QtWidgets.QLineEdit()
button2 = QtWidgets.QPushButton("Url")
lineEdit2 = QtWidgets.QLineEdit()
grid = QtWidgets.QGridLayout()        # Создаем сетку
grid.addWidget(button1, 0, 0)         # Добавляем компоненты
grid.addWidget(lineEdit1, 0, 1)
grid.addWidget(button2, 1, 0)
grid.addWidget(lineEdit2, 1, 1)
button1.clicked.connect(on_clicked)
button2.clicked.connect(on_clicked_url)
window.setLayout(grid)
window.show()
sys.exit(app.exec_())
Архив с файлом можно взять здесь.

    Результат выполнения этого кода показан на рисунках 1, 2.


Рис.1. Использование метода getSaveFileName()


Рис.2. Использование метода getSaveFileUrl()

    На следующем шаге мы рассмотрим окно для выбора цвета.




Предыдущий шаг Содержание Следующий шаг