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

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


Скачать 7.92 Mb.
НазваниеНиколай Прохоренок Владимир Дронов
Дата05.05.2023
Размер7.92 Mb.
Формат файлаpdf
Имя файлаПрохоренок_Н_А__Дронов_В_А_Python_3_и_PyQt_5_Разработка_приложен.pdf
ТипДокументы
#1111379
страница43 из 83
1   ...   39   40   41   42   43   44   45   46   ...   83
 setModified(<Флаг>)
— если передано значение
True
, поле ввода помечается как изме- ненное, если
False
— как неизмененное;
 setEchoMode(<Режим>)
— задает режим отображения текста. Могут быть указаны сле- дующие атрибуты класса
QLineEdit
:

Normal

0
— показывать символы как они были введены;

NoEcho

1
— не показывать вводимые символы;

Password

2
— вместо символов выводить звездочки (
*
);

PasswordEchoOnEdit

3
— показывать символы при вводе, а после потери фокуса вместо них отображать звездочки (
*
);
 setCompleter()
— позволяет предлагать возможные варианты значений, начинающиеся с введенных пользователем символов. В качестве параметра указывается экземпляр класса
QCompleter
: lineEdit = QtWidgets.QLineEdit() arr = ["кадр", "каменный", "камень", "камера"] completer = QtWidgets.QCompleter(arr, parent=window) lineEdit.setCompleter(completer)
 setReadOnly(<Флаг>)
— если в качестве параметра указано значение
True
, поле будет доступно только для чтения;
 isReadOnly()
— возвращает значение
True
, если поле доступно только для чтения, и
False
— в противном случае;
 setAlignment(<Выравнивание>)
— задает выравнивание текста внутри поля;
 setMaxLength(<Количество>)
— задает максимальное количество символов;
 setFrame(<Флаг>)
— если в качестве параметра указано значение
False
, поле будет ото- бражаться без рамки;
 setDragEnabled(<Флаг>)
— если в качестве параметра указано значение
True
, режим перетаскивания текста из текстового поля с помощью мыши будет включен. По умолча- нию однострочное текстовое поле только принимает перетаскиваемый текст;
 setPlaceholderText(<Текст>)
— задает текст подсказки, который будет выводиться в поле, когда оно не содержит значения и не имеет фокуса ввода;

466
Часть II. Библиотека PyQt 5
 setTextMargins()
— задает величины отступов от границ компонента до находящегося в нем текста. Форматы метода: setTextMargins(<Слева>, <Сверху>, <Справа>, <Снизу>) setTextMargins()
 setCursorPosition(<Индекс>)
— задает положение текстового курсора;
 cursorPosition()
возвращает текущее положение текстового курсора;
 cursorForward(<Флаг>[, steps=1])
— перемещает текстовый курсор вперед на указан- ное во втором параметре количество символов. Если в первом параметре указано значе- ние
True
, выполняется выделение фрагмента;
 cursorBackward(<Флаг>[, steps=1])
— перемещает текстовый курсор назад на указан- ное во втором параметре количество символов. Если в первом параметре указано значе- ние
True
, выполняется выделение фрагмента;
 cursorWordForward(<Флаг>)
— перемещает текстовый курсор вперед на одно слово. Если в параметре указано значение
True
, выполняется выделение фрагмента;
 cursorWordBackward(<Флаг>)
— перемещает текстовый курсор назад на одно слово. Если в параметре указано значение
True
, выполняется выделение фрагмента;
 home(<Флаг>)
— перемещает текстовый курсор в начало поля. Если в параметре указано значение
True
, выполняется выделение фрагмента;
 end(<Флаг>)
— перемещает текстовый курсор в конец поля. Если в параметре указано значение
True
, выполняется выделение фрагмента;
 cut()
— копирует выделенный текст в буфер обмена и удаляет его из поля при условии, что есть выделенный фрагмент и используется режим
Normal
. Метод является слотом;
 copy()
— копирует выделенный текст в буфер обмена при условии, что есть выделен- ный фрагмент и используется режим
Normal
. Метод является слотом;
 paste()
— вставляет текст из буфера обмена в текущую позицию текстового курсора при условии, что поле доступно для редактирования. Метод является слотом;
 undo()
— отменяет последнюю операцию ввода пользователем при условии, что отмена возможна. Метод является слотом;
 redo()
— повторяет последнюю отмененную операцию ввода пользователем, если это возможно. Метод является слотом;
 isUndoAvailable()
— возвращает значение
True
, если можно отменить последнюю опе- рацию ввода, и
False
— в противном случае;
 isRedoAvailable()
— возвращает значение
True
, если можно повторить последнюю от- мененную операцию ввода, и
False
— в противном случае;
 createStandardContextMenu()
— создает стандартное меню, которое отображается при щелчке правой кнопкой мыши в текстовом поле. Чтобы изменить стандартное меню, следует создать класс, наследующий класс
QLineEdit
, и переопределить в нем метод contextMenuEvent(self, )
. Внутри этого метода можно создать свое собственное меню или добавить новый пункт в стандартное меню;
 setClearButtonEnabled(<Флаг>)
— если передано
True
, в левой части непустого поля будет выводиться кнопка, нажатием которой можно очистить это поле, если
False
, кнопка очистки выводиться не будет.

Глава 21. Основные компоненты
467
Класс
QLineEdit поддерживает следующие сигналы:
 cursorPositionChanged(<Старая позиция>, <Новая позиция>)
— генерируется при пере- мещении текстового курсора. Внутри обработчика через первый параметр доступна ста- рая позиция курсора, а через второй параметр — новая позиция. Оба параметра являют- ся целочисленными;
 editingFinished
— генерируется при нажатии клавиши или потере полем фоку- са ввода;
 returnPressed
— генерируется при нажатии клавиши ;
 selectionChanged
— генерируется при изменении выделения;
 textChanged(<Новый текст>)
— генерируется при изменении текста внутри поля пользо- вателем или программно. Внутри обработчика через параметр доступен новый текст в виде строки;
 textEdited(<Новый текст>)
— генерируется при изменении текста внутри поля пользо- вателем. При задании текста вызовом метода setText()
не генерируется. Внутри обра- ботчика через параметр доступен новый текст в виде строки.
21.5.2. Ввод данных по маске
С помощью метода setInputMask(<Маска>)
можно ограничить ввод символов допустимым диапазоном значений. В качестве параметра указывается строка, имеющая следующий формат:
"<Последовательность символов>[;<Символ-заполнитель>]"
В первом параметре указывается комбинация из следующих специальных символов:

9
— обязательна цифра от
0
до
9
;

0
— разрешена, но не обязательна цифра от
0
до
9
;

D
— обязательна цифра от
1
до
9
;
 d
— разрешена, но не обязательна цифра от
1
до
9
;

B
— обязательна цифра
0
или
1
;
 b
— разрешена, но не обязательна цифра
0
или
1
;

H
— обязателен шестнадцатеричный символ (
0-9
,
A-F
, a-f
);
 h
— разрешен, но не обязателен шестнадцатеричный символ (
0-9
,
A-F
, a-f
);

#
— разрешена, но не обязательна цифра, знак плюс или минус;

A
— обязательна буква в любом регистре;
 a
— разрешена, но не обязательна буква;

N
— обязательна буква в любом регистре или цифра от
0
до
9
;
 n
— разрешена, но не обязательна буква или цифра от
0
до
9
;

X
— обязателен любой символ;
 x
— разрешен, но не обязателен любой символ;

>
— все последующие буквы переводятся в верхний регистр;

<
— все последующие буквы переводятся в нижний регистр;

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

!
— отключает изменение регистра;

\
— используется для отмены действия спецсимволов.
Все остальные символы трактуются как есть. В необязательном параметре
<Символ- заполнитель>
можно указать символ, который будет отображаться в поле, обозначая место ввода. Если параметр не указан, заполнителем будет служить пробел: lineEdit.setInputMask("Дата: 99.B9.9999;_") # Дата: __.__.____ lineEdit.setInputMask("Дата: 99.B9.9999;#") # Дата: ##.##.#### lineEdit.setInputMask("Дата: 99.B9.9999 г.") # Дата: . . г.
Проверить соответствие введенных данных маске позволяет метод hasAcceptableInput()
Если данные соответствуют маске, метод возвращает значение
True
, а в противном слу- чае —
False
21.5.3. Контроль ввода
Контролировать ввод данных позволяет метод setValidator()
. В качестве па- раметра указывается экземпляр класса, наследующего класс
QValidator из модуля
QtGui
Существуют следующие стандартные классы, позволяющие контролировать ввод данных:

QIntValidator
— допускает ввод только целых чисел. Функциональность класса зависит от настройки локали. Форматы конструктора:
QIntValidator([parent=None])
QIntValidator(<Минимальное значение>, <Максимальное значение>
[, parent=None])
Пример ограничения ввода диапазоном целых чисел от
0
до
100
: lineEdit.setValidator(QtGui.QIntValidator(0, 100, parent=window))

QDoubleValidator
— допускает ввод только вещественных чисел. Функциональность класса зависит от настройки локали. Форматы конструктора:
QDoubleValidator([parent=None])
QDoubleValidator(<Минимальное значение>, <Максимальное значение>,
<Количество цифр после точки>[, parent=None])
Пример ограничения ввода диапазоном вещественных чисел от
0.0
до
100.0
. и двумя цифрами после десятичной точки: lineEdit.setValidator(
QtGui.QDoubleValidator(0.0, 100.0, 2, parent=window))
Чтобы позволить вводить числа в экспоненциальной форме, необходимо передать зна- чение атрибута
ScientificNotation в метод setNotation()
. Если передать значение атрибута
StandardNotation
, будет разрешено вводить числа только в десятичной форме: validator = QtGui.QDoubleValidator(0.0, 100.0, 2, parent=window) validator.setNotation(QtGui.QDoubleValidator.StandardNotation) lineEdit.setValidator(validator)

QRegExpValidator
— позволяет проверить данные на соответствие регулярному выраже- нию. Форматы конструктора:
QRegExpValidator([parent=None])
QRegExpValidator([, parent=None])

Глава 21. Основные компоненты
469
Пример ввода только цифр от
0
до
9
: validator = QtGui.QRegExpValidator(
QtCore.QRegExp("[0-9]+"), parent=window) lineEdit.setValidator(validator)
Обратите внимание, что здесь производится проверка полного соответствия шаблону, поэтому символы
^
и
$
явным образом указывать не нужно.
Проверить соответствие введенных данных условию позволяет метод hasAcceptableInput()
Если данные соответствуют условию, метод возвращает значение
True
, а в противном слу- чае —
False
21.6. Многострочное текстовое поле
Многострочное текстовое поле предназначено для ввода и редактирования как простого текста, так и текста в формате HTML. Поле поддерживает технологию drag & drop, стан- дартные комбинации клавиш быстрого доступа, работу с буфером обмена и многое другое.
Многострочное текстовое поле реализуется с помощью класса
QTextEdit
. Иерархия насле- дования:
(QObject, QPaintDevice) — QWidget — QFrame —
QAbstractScrollArea — QTextEdit
Конструктор класса
QTextEdit имеет два формата вызова:
<Объект> = QTextEdit([parent=<Родитель>])
<Объект> = QTextEdit(<Текст>[, parent=<Родитель>])
В параметре parent указывается ссылка на родительский компонент. Если параметр не ука- зан или имеет значение
None
, компонент будет обладать своим собственным окном. Пара- метр
<Текст>
позволяет задать текст в формате HTML, который будет отображен в тексто- вом поле.
П
РИМЕЧАНИЕ
Класс QTextEdit предназначен для отображения как простого текста, так и текста в форма- те HTML. Если поддержка HTML не нужна, то следует воспользоваться классом
QPlainTextEdit
, который оптимизирован для работы с простым текстом большого объема.
21.6.1. Основные методы и сигналы
Класс
QTextEdit поддерживает следующие основные методы (полный их список смотрите на странице https://doc.qt.io/qt-5/qtextedit.html):
 setText(<Текст>)
— помещает указанный текст в поле. Текст может быть простым или в формате HTML. Метод является слотом;
 setPlainText(<Текст>)
— помещает в поле простой текст. Метод является слотом;
 setHtml(<Текст>)
— помещает в поле текст в формате HTML. Метод является слотом;
 insertPlainText(<Текст>)
— вставляет простой текст в текущую позицию текстового курсора. Если в поле был выделен фрагмент, он будет удален. Метод является слотом;
 insertHtml(<Текст>)
— вставляет текст в формате HTML в текущую позицию текстово- го курсора. Если в поле был выделен фрагмент, он будет удален. Метод является слотом;

470
Часть II. Библиотека PyQt 5
 append(<Текст>)
— добавляет новый абзац с указанным текстом в формате HTML в ко- нец поля. Метод является слотом;
 setDocumentTitle(<Текст>)
— задает текст заголовка документа (для тега
<br>); <br> documentTitle()<br> — возвращает текст заголовка (из тега <br><title><br>); <br> toPlainText()<br> — возвращает простой текст, содержащийся в текстовом поле; <br> toHtml()<br> — возвращает текст в формате HTML; <br> clear()<br> — удаляет весь текст из поля. Метод является слотом; <br> selectAll()<br> — выделяет весь текст в поле. Метод является слотом; <br> zoomIn([range=1])<br> — увеличивает размер шрифта. Метод является слотом; <br> zoomOut([range=1])<br> — уменьшает размер шрифта. Метод является слотом; <br> cut()<br> — копирует выделенный текст в буфер обмена и удаляет его из поля при условии, что есть выделенный фрагмент. Метод является слотом; <br> copy()<br> — копирует выделенный текст в буфер обмена при условии, что есть выделен- ный фрагмент. Метод является слотом; <br> paste()<br> — вставляет текст из буфера обмена в текущую позицию текстового курсора при условии, что поле доступно для редактирования. Метод является слотом; <br> canPaste()<br> — возвращает <br>True<br>, если из буфера обмена можно вставить текст, и <br>False<br> — в противном случае; <br> setAcceptRichText(<Флаг>)<br> — если в качестве параметра указано значение <br>True<br>, в поле можно будет ввести, вставить из буфера обмена или при помощи перетаскивания текст в формате HTML. Значение <br>False дает возможность заносить в поле лишь обычный текст; <br> acceptRichText()<br> — возвращает значение <br>True<br>, если в поле можно занести текст в фор- мате HTML, и <br>False<br> — если доступно занесение лишь обычного текста; <br> undo()<br> — отменяет последнюю операцию ввода пользователем при условии, что отмена возможна. Метод является слотом; <br> redo()<br> — повторяет последнюю отмененную операцию ввода пользователем, если это возможно. Метод является слотом; <br> setUndoRedoEnabled(<Флаг>)<br> — если в качестве значения указано значение <br>True<br>, опера- ции отмены и повтора действий разрешены, а если <br>False<br> — то запрещены; <br> isUndoRedoEnabled()<br> — возвращает значение <br>True<br>, если операции отмены и повтора действий разрешены, и <br>False<br> — <a href="/kak-uznate-kakie-preparati-zapresheni-v2/index.html" title="Как узнать, какие препараты запрещены?">если запрещены</a>; <br> createStandardContextMenu([<QPoint>])<br> — создает стандартное меню, которое отобра- жается при щелчке правой кнопкой мыши в текстовом поле. Чтобы изменить стандарт- ное меню, следует создать класс, наследующий класс <br>QTextEdit<br>, и переопределить в нем метод contextMenuEvent(self, <event>)<br>. Внутри этого метода можно создать свое соб- ственное меню или добавить новый пункт в стандартное меню; <br> ensureCursorVisible()<br> — прокручивает область таким образом, чтобы текстовый курсор оказался в зоне видимости; <br> find()<br> — производит поиск фрагмента (по умолчанию в прямом направлении без учета регистра символов) в текстовом поле. Если фрагмент найден, он выделяется, и метод возвращает значение <br>True<br>, в противном случае — значение <br>False<br>. Форматы метода: <br></div> <div> <br>Глава 21. Основные компоненты <br>471 find(<Искомый текст>[, <Режим>]) find(<QRegExp>[, <Режим>]) <br>Искомый текст можно указать либо строкой, либо регулярным выражением, представ- ленным экземпляром класса <br>QRegExp<br>. В необязательном параметре <br><Режим><br> можно указать комбинацию (через оператор <br>|<br>) следующих атрибутов класса <br>QTextDocument из модуля <br>QtGui<br>: <br>• <br>FindBackward<br> — <br>1<br> — поиск в обратном, а не в прямом направлении; <br>• <br>FindCaseSensitively<br> — <br>2<br> — поиск с учетом регистра символов; <br>• <br>FindWholeWords<br> — <br>4<br> — поиск целых слов, а не фрагментов; <br> print(<QPagedPaintDevice>)<br> — отправляет содержимое текстового поля на печать. <br>В качестве параметра указывается экземпляр одного из классов, порожденных от <br>QPagedPaintDevice<br>:<br> QPrinter или <br>QPdfWriter<br>. Вот пример вывода документа в файл в формате PDF: pdf = QtGui.QPdfWriter("document.pdf") textEdit.print(pdf) <br>Класс <br>QTextEdit поддерживает следующие сигналы: <br> currentCharFormatChanged(<QTextCharFormat>)<br> — генерируется при изменении формата текста. Внутри обработчика через параметр доступен новый формат; <br> cursorPositionChanged<br> — генерируется при <a href="/vremena-goda-v2/index.html" title="Времена года">изменении положения текстового курсора</a>; <br> selectionChanged<br> — генерируется при изменении выделения текста; <br> textChanged<br> — генерируется при изменении текста в поле; <br> copyAvailable(<Флаг>)<br> — генерируется при выделении текста или, наоборот, снятии выделения. Значение параметра <br>True указывает, что фрагмент выделен, и его можно скопировать, значение <br>False<br> — обратное; <br> undoAvailable(<Флаг>)<br> — генерируется при изменении возможности отменить опера- цию ввода. Значение параметра <br>True указывает, что операция ввода может быть отмене- на, значение <br>False говорит об обратном; <br> redoAvailable(<Флаг>)<br> — генерируется при изменении возможности повторить отме- ненную операцию ввода. Значение параметра <br>True обозначает возможность повтора от- мененной операции, а значение <br></qtextcharformat></qpagedpaintdevice></qregexp></event></qpoint>
1   ...   39   40   41   42   43   44   45   46   ...   83


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