Главная страница

ээдд. Прохоренок_Н_А__Дронов_В_А_Python_3_и_PyQt_5_Разработка_приложен. Николай Прохоренок Владимир Дронов


Скачать 7.92 Mb.
НазваниеНиколай Прохоренок Владимир Дронов
Дата05.05.2023
Размер7.92 Mb.
Формат файлаpdf
Имя файлаПрохоренок_Н_А__Дронов_В_А_Python_3_и_PyQt_5_Разработка_приложен.pdf
ТипДокументы
#1111379
страница61 из 83
1   ...   57   58   59   60   61   62   63   64   ...   83
(, <Статус>)
. Если второй элемент содержит значение
True
, первый элемент хранит экземпляр класса
QFont с выбранным шрифтом. Пример:
(font, ok) = QtWidgets.QFontDialog.getFont(QtGui.QFont("Tahoma", 16), parent=window, caption="Заголовок окна") if ok: print(font.family(), font.pointSize(), font.weight(), font.italic(), font.underline())
Результат выполнения этого кода показан на рис. 26.14.

640
Часть II. Библиотека PyQt 5
Рис. 26.14. Окно для выбора шрифта
26.8. Окно для вывода сообщения об ошибке
Класс
QErrorMessage реализует немодальное диалоговое окно с сообщением об ошибке
(рис. 26.15). Окно содержит надпись с собственно сообщением и флажок. Если пользова- тель снимает флажок, окно больше отображаться не будет. Иерархия наследования для класса
QErrorMessage выглядит так:
(QObject, QPaintDevice) — QWidget — QDialog — QErrorMessage
Формат конструктора класса
QErrorMessage
:
<Объект> = QErrorMessage([parent=None])
Рис. 26.15. Окно для вывода сообщения об ошибке
Для отображения окна предназначен метод showMessage()
. Форматы его вызова: showMessage(<Текст сообщения>) showMessage(<Текст сообщения>, <Тип>)
Если пользователь установил флажок, и тип сообщения не был задан, все последующие со- общения об ошибках не будут выводиться на экран. Если же был указан тип сообщения, то не будут выводиться лишь сообщения того же типа. Оба формата метода являются слотами:

Глава 26. Диалоговые окна
641 ems = QtWidgets.QErrorMessage(parent=window) ems.showMessage("Сообщение об ошибке") ems.showMessage("Сообщение об ошибке типа warning", "warning")
26.9. Окно с индикатором хода процесса
Класс
QProgressDialog реализует диалоговое окно с индикатором хода процесса и кнопкой
Cancel
(рис. 26.16). Иерархия наследования для класса
QProgressDialog выглядит так:
(QObject, QPaintDevice) — QWidget — QDialog — QProgressDialog
Рис. 26.16. Окно с индикатором хода процесса
Форматы конструктора класса
QProgressDialog
:
<Объект> = QProgressDialog([parent=None][, flags=0])
<Объект> = QProgressDialog(<Текст над индикатором>, <Текст на кнопке Cancel>,
<Минимум>, <Максимум>[, parent=None][, flags=0])
Значения минимума и максимума должны быть заданы в виде целых чисел. Если в парамет- ре parent указана ссылка на родительское окно, диалоговое окно будет центрироваться от- носительно родительского окна, а не экрана. Параметр flags задает тип окна (см. разд. 18.2).
Класс
QProgressDialog наследует все методы базовых классов и дополнительно определяет следующие методы (здесь приведены только основные — полный их список можно найти на странице https://doc.qt.io/qt-5/qprogressdialog.html):
 setValue(<Значение>)
задает новое значение индикатора, которое должно представ- лять собой целое число. Если диалоговое окно является модальным, при установке значения автоматически вызывается метод processEvents()
объекта приложения. Метод является слотом;
 value()
— возвращает текущее значение индикатора в виде целого числа;
 setLabelText(<Текст над индикатором>)
— задает надпись, выводимую над индикато- ром. Метод является слотом;
 setCancelButtonText(<Текст на кнопке Cancel>)
— задает надпись для кнопки Cancel.
Метод является слотом;
 setRange(<Минимум>, <Максимум>)
, setMinimum(<Минимум>)
и setMaximum(<Максимум>)
— задают минимальное и максимальное значения в виде целых чисел. Если оба значения равны нулю, то внутри индикатора будут постоянно по кругу перемещаться сегменты, показывая ход выполнения процесса с неопределенным количеством шагов. Методы являются слотами;
 setMinimumDuration(<Значение>)
— задает промежуток времени в миллисекундах перед отображением окна (задается целым числом — значение по умолчанию:
4000
). Окно

642
Часть II. Библиотека PyQt 5 может быть отображено ранее этого срока при установке значения. Метод является слотом;
 reset()
— сбрасывает значение индикатора. Метод является слотом;
 cancel()
— имитирует нажатие кнопки Cancel. Метод является слотом;
 setLabel()
— позволяет заменить объект надписи;
 setBar()
— позволяет заменить объект индикатора;
 setCancelButton()
— позволяет заменить объект кнопки;
 setAutoClose(<Флаг>)
— если в качестве параметра указано значение
True
, при сбросе значения окно скрывается;
 setAutoReset(<Флаг>)
— если в качестве параметра указано значение
True
, при дости- жении максимального значения будет автоматически произведен сброс;
 wasCanceled()
— возвращает значение
True
, если была нажата кнопка Cancel.
Класс
QProgressDialog поддерживает сигнал canceled()
, который генерируется при нажа- тии кнопки Cancel.
26.10. Создание многостраничного мастера
С помощью классов
QWizard и
QWizardPage можно создать мастер — диалоговое окно, в котором при нажатии кнопок Back (Назад) и Next (Далее) последовательно или в произ- вольном порядке отображаются различные страницы. Класс
QWizard реализует контейнер для страниц, а отдельная страница описывается с помощью класса
QWizardPage
26.10.1. Класс QWizard
Класс
QWizard реализует набор страниц, отображаемых последовательно или в произволь- ном порядке. Иерархия наследования для него выглядит так:
(QObject, QPaintDevice) — QWidget — QDialog — QWizard
Формат конструктора класса
QWizard
:
<Объект> = QWizard([parent=None][, flags=0])
Помимо унаследованных методов, класс
QWizard поддерживает следующие (здесь приведе- ны только основные — полный их список можно найти на странице https://doc.qt.io/qt-5/ qwizard.html
):
 addPage()
— добавляет страницу в конец мастера и возвращает ее це- лочисленный идентификатор. В качестве параметра указывается экземпляр класса
QWizardPage
;
 setPage(<Идентификатор>, )
— добавляет страницу в указанную позицию;
 removePage(<Идентификатор>)
— удаляет страницу с указанным идентификатором;
 page(<Идентификатор>)
— возвращает ссылку на страницу (экземпляр класса
QWizardPage
), соответствующую указанному идентификатору, или значение
None
, если такой страницы не существует;
 pageIds()
— возвращает список с идентификаторами страниц;

Глава 26. Диалоговые окна
643
 currentId()
— возвращает идентификатор текущей страницы;
 currentPage()
— возвращает ссылку на текущую страницу (экземпляр класса
QWizardPage
) или
None
, если страницы не существует;
 setStartId(<Идентификатор>)
— задает идентификатор начальной страницы;
 startId()
— возвращает идентификатор начальной страницы;
 visitedPages()
— возвращает список с идентификаторами посещенных страниц или пустой список;
 hasVisitedPage(<Идентификатор>)
— возвращает значение
True
, если страница была по- сещена, и
False
— в противном случае;
 back()
— имитирует нажатие кнопки Back. Метод является слотом;
 next()
— имитирует нажатие кнопки Next. Метод является слотом;
 restart()
— перезапускает мастер. Метод является слотом;
 nextId(self)
— этот метод следует переопределить в классе, наследующем класс
QWizard
, если необходимо изменить порядок отображения страниц. Метод вызывается при нажатии кнопки Next и должен возвращать идентификатор следующей страницы или значение
-1
;
 initializePage(self, <Идентификатор>)
— этот метод следует переопределить в классе, наследующем
QWizard
, если необходимо производить настройку свойств компонентов на основе данных, введенных на предыдущих страницах. Метод вызывается при нажатии кнопки Next на предыдущей странице, но до отображения следующей страницы. Если установлена опция
IndependentPages
, метод вызывается только при первом отображении страницы;
 cleanupPage(self, <Идентификатор>)
— этот метод следует переопределить в классе, наследующем
QWizard
, если необходимо контролировать нажатие кнопки Back. Метод вызывается при нажатии кнопки Back на текущей странице, но до отображения преды- дущей страницы. Если установлена опция
IndependentPages
, метод не вызывается;
 validateCurrentPage(self)
— этот метод следует переопределить в классе, наследую- щем
QWizard
, если необходимо производить проверку данных, введенных на текущей странице. Метод вызывается при нажатии кнопки Next или Finish. Метод должен вер- нуть значение
True
, если данные корректны, и
False
— в противном случае. Если метод возвращает значение
False
, переход на следующую страницу не производится;
 setField(<Свойство>, <Значение>)
— устанавливает значение указанного свойства.
Создание свойства производится с помощью метода registerField()
класса
QWizardPage
. Используя метод setField()
, можно изменять значения компонентов, рас- положенных на разных страницах мастера;
 field(<Свойство>)
— возвращает значение указанного свойства. Создание свойства производится с помощью метода registerField()
класса
QWizardPage
. Используя метод field()
, можно также получить значения компонентов, расположенных на разных стра- ницах мастера;
 setWizardStyle(<Стиль>)
— задает стилевое оформление мастера. В качестве параметра указываются следующие атрибуты класса
QWizard
:

ClassicStyle

0
;

ModernStyle

1
;

644
Часть II. Библиотека PyQt 5

MacStyle

2
;

AeroStyle

3
;
 setTitleFormat(<Формат>)
— задает формат отображения названия страницы. В качестве параметра указываются следующие атрибуты класса
QtCore.Qt
:

PlainText

0
— простой текст;

RichText

1
— форматированный текст;

AutoText

2
— автоматическое определение (режим по умолчанию). Если текст содержит HTML-теги, то используется режим
RichText
, в противном случае — ре- жим
PlainText
;
 setSubTitleFormat(<Формат>)
— задает формат отображения описания страницы. До- пустимые значения см. в описании метода setTitleFormat()
;
 setButton(<Роль>, )
— добавляет кнопку для указанной роли. В пер- вом параметре указываются следующие атрибуты класса
QWizard
:

BackButton

0
— кнопка Back;

NextButton

1
— кнопка Next;

CommitButton

2
— кнопка Commit;

FinishButton

3
— кнопка Finish;

CancelButton

4
— кнопка Cancel (если установлена опция
NoCancelButton
, кнопка не отображается);

HelpButton

5
— кнопка Help (чтобы отобразить кнопку, необходимо установить опцию
HaveHelpButton
);

CustomButton1

6
— первая пользовательская кнопка (чтобы отобразить кнопку, необходимо установить опцию
HaveCustomButton1
);

CustomButton2

7
— вторая пользовательская кнопка (чтобы отобразить кнопку, необходимо установить опцию
HaveCustomButton2
);

CustomButton3

8
— третья пользовательская кнопка (чтобы отобразить кнопку, не- обходимо установить опцию
HaveCustomButton3
);
 button(<Роль>)
— возвращает ссылку на кнопку с указанной ролью;
 setButtonText(<Роль>, <Текст надписи>)
— устанавливает текст надписи для кнопки с указанной ролью;
 buttonText(<Роль>)
— возвращает текст надписи кнопки с указанной ролью;
 setButtonLayout(<Список с ролями>)
— задает порядок отображения кнопок. В качестве параметра указывается список с ролями кнопок. Список может также содержать значе- ние атрибута
Stretch класса
QWizard
, который задает фактор растяжения;
 setPixmap(<Роль>, )
— добавляет изображение для указанной роли. В первом параметре указываются следующие атрибуты класса
QWizard
:

WatermarkPixmap

0
— изображение, которое занимает всю левую сторону страни- цы при использовании стилей
ClassicStyle или
ModernStyle
;

LogoPixmap

1
— небольшое изображение, отображаемое в правой части заголовка при использовании стилей
ClassicStyle или
ModernStyle
;

Глава 26. Диалоговые окна
645

BannerPixmap

2
— фоновое изображение, отображаемое в заголовке страницы при использовании стиля
ModernStyle
;

BackgroundPixmap

3
— фоновое изображение при использовании стиля
MacStyle
;
 setOption(<Опция>[, on=True])
— если во втором параметре указано значение
True
, за- данная в первом параметре опция будет установлена, а если указано значение
False
, сброшена. В первом параметре указываются следующие атрибуты класса
QWizard
:

IndependentPages
— страницы не зависят друг от друга. В этом случае метод initializePage()
будет вызван только при первом отображении страницы, а метод cleanupPage()
не вызывается;

IgnoreSubTitles
— не отображать описание страницы в заголовке;

ExtendedWatermarkPixmap
— изображение с ролью
WatermarkPixmap будет занимать всю левую сторону страницы вплоть до нижнего края окна;

NoDefaultButton
— не делать кнопки Next и Finish кнопками по умолчанию;

NoBackButtonOnStartPage
— не отображать кнопку Back на стартовой странице;

NoBackButtonOnLastPage
— не отображать кнопку Back на последней странице;

DisabledBackButtonOnLastPage
— сделать кнопку Back неактивной на последней странице;

HaveNextButtonOnLastPage
— показать неактивную кнопку Next на последней стра- нице;

HaveFinishButtonOnEarlyPages
— показать неактивную кнопку Finish на непослед- них страницах;

NoCancelButton
— не отображать кнопку Cancel;

CancelButtonOnLeft
— поместить кнопку Cancel слева от кнопки Back (по умолча- нию кнопка Cancel расположена справа от кнопок Next и Finish);

HaveHelpButton
— показать кнопку Help;

HelpButtonOnRight
— поместить кнопку Help у правого края окна;

HaveCustomButton1
— показать пользовательскую кнопку с ролью
CustomButton1
;

HaveCustomButton2
— показать пользовательскую кнопку с ролью
CustomButton2
;

HaveCustomButton3
— показать пользовательскую кнопку с ролью
CustomButton3
;

NoCancelButtonOnLastPage
— не показывать кнопку Cancel на последней странице;
 setOptions(<Опции>)
— устанавливает сразу несколько опций;
 setSideWidget()
— устанавливает заданный компонент в левую часть мастера.
Если используется стиль
ClassicStyle или
ModernStyle
, компонент будет выведен выше заданного с ролью
WatermarkPixmap изображения.
Класс
QWizard поддерживает следующие сигналы:
 currentIdChanged(<Идентификатор>)
— генерируется при изменении текущей страницы.
Внутри обработчика через параметр доступен целочисленный идентификатор текущей страницы;
 customButtonClicked(<Роль>)
— генерируется при нажатии кнопок с ролями
CustomButton1
,
CustomButton2
и
CustomButton3
. В параметре доступна целочисленная роль нажатой кнопки;

646
Часть II. Библиотека PyQt 5
 helpRequested()
— генерируется при нажатии кнопки Help;
 pageAdded(<Идентификатор>)
— генерируется при добавлении страницы. В параметре передается целочисленный идентификатор добавленной страницы;
 pageRemoved(<Идентификатор>)
— генерируется при удалении страницы. В параметре передается целочисленный идентификатор удаленной страницы.
26.10.2. Класс QWizardPage
Класс
QWizardPage описывает одну страницу в многостраничном мастере. Его иерархия на- следования такова:
(QObject, QPaintDevice) — QWidget — QWizardPage
Формат конструктора класса
QWizardPage
:
<Объект> = QWizardPage([parent=None])
Класс
QWizardPage наследует все методы базовых классов и, помимо них, поддерживает также следующие методы (здесь приведены только основные — полный их список можно найти на странице https://doc.qt.io/qt-5/qwizardpage.html):
 wizard()
— возвращает ссылку на объект мастера (экземпляр класса
QWizard
) или значе- ние
None
, если страница не была добавлена в какой-либо мастер;
 setTitle(<Текст>)
— задает название страницы;
 title()
— возвращает название страницы;
 setSubTitle(<Текст>)
— задает описание страницы;
 subTitle()
— возвращает описание страницы;
 setButtonText(<Роль>, <Текст надписи>)
— устанавливает текст надписи для кнопки с указанной ролью (допустимые значения параметра
<Роль>
см. в описании метода setButton()
класса
QWizard
);
 buttonText(<Роль>)
— возвращает текст надписи кнопки с указанной ролью;
 setPixmap(<Роль>, )
— добавляет изображение для указанной роли (допусти- мые значения параметра
<Роль>
см. в описании метода setPixmap()
класса
QWizard
);
 registerField()
— регистрирует свойство, с помощью которого можно получить доступ к значению компонента с любой страницы мастера. Формат метода: registerField(<Свойство>, [, property=None][, changedSignal=0])
В параметре
<Свойство>
указывается произвольное название свойства в виде строки.
Если в конце строки указать символ
*
, компонент должен обязательно иметь значение
(например, в поле должно быть введено какое-либо значение), иначе кнопки Next и
Finish будут недоступны. Во втором параметре указывается ссылка на компонент. После регистрации свойства изменить значение компонента позволяет метод setField()
, а по- лучить значение — метод field()
В параметре property может быть указано свойство для получения и изменения значе- ния, а в параметре changedSignal
— сигнал, генерируемый при изменении значения.
Назначить эти параметры для определенного класса позволяет также метод setDefaultProperty(<Название класса>
1   ...   57   58   59   60   61   62   63   64   ...   83


написать администратору сайта