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

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


Скачать 7.92 Mb.
НазваниеНиколай Прохоренок Владимир Дронов
Дата05.05.2023
Размер7.92 Mb.
Формат файлаpdf
Имя файлаПрохоренок_Н_А__Дронов_В_А_Python_3_и_PyQt_5_Разработка_приложен.pdf
ТипДокументы
#1111379
страница42 из 83
1   ...   38   39   40   41   42   43   44   45   ...   83
полужирный")

Глава 21. Основные компоненты
459
Перевод строки в простом тексте осуществляется с помощью символа
\n
, а в тексте в формате HTML — с помощью тега
: label.setText("Текст\nна двух строках")
Внутри текста символ
&
, указанный перед буквой или цифрой, задает комбинацию кла- виш быстрого доступа. В этом случае буква, перед которой указан символ
&
, будет — в качестве подсказки пользователю — подчеркнута. При одновременном нажатии кла- виши и подчеркнутой буквы компонент, ссылка на который передана в метод setBuddy()
, окажется в фокусе ввода. Чтобы вывести сам символ
&
, необходимо его уд- воить. Если надпись не связана с другим компонентом, символ
&
выводится в составе текста: label = QtWidgets.QLabel("&Пароль") lineEdit = QtWidgets.QLineEdit() label.setBuddy(lineEdit)
Метод является слотом;
 setNum(<Число>)
— преобразует целое или вещественное число в строку и отображает ее на надписи. Метод является слотом;
 setWordWrap(<Флаг>)
— если в параметре указано значение
True
, текст может перено- ситься на другую строку. По умолчанию перенос строк не осуществляется;
 text()
— возвращает текст надписи;
 setTextFormat(<Режим>)
— задает режим отображения текста. Могут быть указаны сле- дующие атрибуты класса
QtCore.Qt
:

PlainText

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

RichText

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

AutoText

2
— автоматическое определение (режим по умолчанию). Если текст со- держит HTML-теги, то используется режим
RichText
, в противном случае — режим
PlainText
;
 setAlignment(<Режим>)
— задает режим выравнивания текста внутри надписи (допусти- мые значения мы рассматривали в разд. 20.2): label.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignBottom)
 setOpenExternalLinks(<Флаг>)
— если в качестве параметра указано значение
True
, теги

, присутствующие в тексте, будут преобразованы в гиперссылки: label.setText('Это гиперссылка') label.setOpenExternalLinks(True)
 setBuddy(<Компонент>)
— позволяет связать надпись с другим компонентом. В этом случае в тексте надписи можно задавать клавиши быстрого доступа, указав символ
&
пе- ред буквой или цифрой. После нажатия комбинации клавиш в фокусе ввода окажется компонент, ссылка на который передана в качестве параметра;
 setPixmap()
— позволяет вывести изображение на надпись. В качестве пара- метра указывается экземпляр класса
QPixmap
: label.setPixmap(QtGui.QPixmap("picture.jpg"))
Метод является слотом;
 setPicture()
— позволяет вывести рисунок. В качестве параметра указыва- ется экземпляр класса
QPicture
. Метод является слотом;

460
Часть II. Библиотека PyQt 5
 setMovie()
— позволяет вывести анимацию. В качестве параметра указывается экземпляр класса
QMovie
. Метод является слотом;
 setScaledContents(<Флаг>)
— если в параметре указано значение
True
, то при измене- нии размеров надписи размер содержимого также будет изменяться. По умолчанию из- менение размеров содержимого не осуществляется;
 setMargin(<Отступ>)
— задает отступы от границ компонента до его содержимого;
 setIndent(<Отступ>)
— задает отступ от рамки до текста надписи в зависимости от зна- чения выравнивания. Если выравнивание производится по левой стороне, то задает от- ступ слева, если по правой стороне, то справа;
 clear()
— удаляет содержимое надписи. Метод является слотом;
 setTextInteractionFlags(<Режим>)
— задает режим взаимодействия пользователя с тек- стом надписи. Можно указать следующие атрибуты (или их комбинацию через опера- тор
|
) класса
QtCore.Qt
:

NoTextInteraction

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

TextSelectableByMouse

1
— текст можно выделить мышью, чтобы, например, ско- пировать его в буфер обмена;

TextSelectableByKeyboard

2
— текст можно выделить с помощью клавиш на кла- виатуре. Внутри надписи будет отображен текстовый курсор;

LinksAccessibleByMouse

4
— на гиперссылках, присутствующих в тексте надписи, можно щелкать мышью;

LinksAccessibleByKeyboard

8
— с гиперссылками, присутствующими в тексте надписи, допускается взаимодействовать с помощью клавиатуры: перемещаться ме- жду гиперссылками можно с помощью клавиши , а переходить по гиперссыл- ке — по нажатию клавиши ;

TextEditable

16
— текст надписи можно редактировать;

TextEditorInteraction
— комбинация
TextSelectableByMouse |
TextSelectableByKeyboard | TextEditable
;

TextBrowserInteraction
— комбинация
TextSelectableByMouse |
LinksAccessibleByMouse | LinksAccessibleByKeyboard
;
 setSelection(<Индекс>, <Длина>)
— выделяет фрагмент длиной
<Длина>
, начиная с по- зиции
<Индекс>
;
 selectionStart()
— возвращает начальный индекс выделенного фрагмента или значе- ние
-1
, если ничего не выделено;
 selectedText()
— возвращает выделенный текст или пустую строку, если ничего не вы- делено;
 hasSelectedText()
— возвращает значение
True
, если фрагмент текста надписи выделен, и
False
— в противном случае.
Класс
QLabel поддерживает следующие сигналы:
 linkActivated()
— генерируется при переходе по гиперссылке. Через параметр внутри обработчика доступен URL-адрес, заданный в виде строки;

Глава 21. Основные компоненты
461
 linkHovered()
— генерируется при наведении указателя мыши на гиперссылку.
Через параметр внутри обработчика доступен URL-адрес в виде строки или пустая строка.
21.2. Командная кнопка
Командная кнопка используется для запуска какой-либо операции. Кнопка реализуется с помощью класса
QPushButton
. Иерархия наследования:
(QObject, QPaintDevice) — QWidget — QAbstractButton — QPushButton
Конструктор класса
QPushButton имеет три формата:
<Объект> = QPushButton([parent=<Родитель>])
<Объект> = QPushButton(<Текст>[, parent=<Родитель>])
<Объект> = QPushButton(, <Текст>[, parent=<Родитель>])
В параметре parent указывается ссылка на родительский компонент. Если таковой не задан или имеет значение
None
, компонент будет обладать своим собственным окном. Параметр
<Текст>
позволяет задать текст, который отобразится на кнопке, а параметр

— до- бавить перед текстом значок.
Класс
QPushButton наследует следующие методы из класса
QAbstractButton
(здесь приведе- ны только основные — полный их список смотрите на странице https://doc.qt.io/qt-
5/qabstractbutton.html):
 setText(<Текст>)
— задает текст, который будет отображен на кнопке. Внутри текста символ
&
, указанный перед буквой или цифрой, задает комбинацию клавиш быстрого доступа. В этом случае буква, перед которой указан символ
&
, будет — в качестве под- сказки пользователю — подчеркнута. Одновременное нажатие клавиши и под- черкнутой буквы приведет к нажатию этой кнопки. Чтобы вывести сам символ
&
, необ- ходимо его удвоить;
 text()
— возвращает текст, отображаемый на кнопке;
 setShortcut()
— задает комбинацию клавиш быстрого доступа. Вот примеры указания значения: button.setShortcut("Alt+В") button.setShortcut(QtGui.QKeySequence.mnemonic("&В")) button.setShortcut(QtGui.QKeySequence("Alt+В")) button.setShortcut(
QtGui.QKeySequence(QtCore.Qt.ALT + QtCore.Qt.Key_E))
 setIcon()
— вставляет значок перед текстом кнопки;
 setIconSize()
— задает размеры значка в виде экземпляра класса
QSize
. Метод является слотом;
 setAutoRepeat(<Флаг>)
— если в качестве параметра указано значение
True
, сигнал clicked будет периодически генерироваться, пока кнопка находится в нажатом состоя- нии. Примером являются кнопки, изменяющие значение полосы прокрутки;
 animateClick([<Интервал>])
— имитирует нажатие кнопки пользователем. После нажа- тия кнопка находится в этом состоянии указанный промежуток времени, по истечении которого отпускается. Значение указывается в миллисекундах. Если параметр не указан, то интервал равен 100 миллисекундам. Метод является слотом;

462
Часть II. Библиотека PyQt 5
 click()
— имитирует нажатие кнопки без анимации. Метод является слотом;
 setCheckable(<Флаг>)
— если в качестве параметра указано значение
True
, то кнопка является переключателем, который может находиться в двух состояниях: установленном и неустановленном;
 setChecked(<Флаг>)
— если в качестве параметра указано значение
True
, кнопка- переключатель будет находиться в установленном состоянии. Метод является слотом;
 isChecked()
— возвращает значение
True
, если кнопка находится в установленном со- стоянии, и
False
— в противном случае;
 toggle()
— переключает кнопку. Метод является слотом;
 setAutoExclusive(<Флаг>)
— если в качестве параметра указано значение
True
, внутри контейнера может быть установлена только одна кнопка-переключатель;
 setDown(<Флаг>)
— если в качестве параметра указано значение
True
, кнопка будет на- ходиться в нажатом состоянии;
 isDown()
— возвращает значение
True
,
если кнопка находится в нажатом состоянии, и
False
— в противном случае.
Кроме указанных состояний, кнопка может находиться в неактивном состоянии. Для этого необходимо передать значение
False в метод setEnabled()
, унаследованный от класса
QWidget
. Проверить, активна ли кнопка, позволяет метод isEnabled()
, возвращающий зна- чение
True
, если кнопка находится в активном состоянии, и
False
— в противном случае.
Это же касается и всех прочих компонентов, порожденных от класса
QWidget
Класс
QAbstractButton поддерживает следующие сигналы:
 pressed
— генерируется при нажатии кнопки;
 released
— генерируется при отпускании ранее нажатой кнопки;
 clicked(<Состояние>)
— генерируется при нажатии, а затем отпускании кнопки мыши над кнопкой. Именно для этого сигнала обычно назначают обработчики. Передаваемый обработчику параметр имеет значение
True
, если кнопка-переключатель установлена, и
False
, если она сброшена или это обычная кнопка, а не переключатель;
 toggled(<Состояние>)
— генерируется при изменении состояния кнопки-переключателя.
Через параметр доступно новое состояние кнопки.
Класс
QPushButton определяет свои собственные методы (здесь приведены только основ- ные — полный их список смотрите на странице https://doc.qt.io/qt-5/qpushbutton.html):
 setFlat(<Флаг>)
— если в качестве параметра указано значение
True
, кнопка будет ото- бражаться без рамки;
 setAutoDefault(<Флаг>)
— если в качестве параметра указано значение
True
, кнопка может быть нажата с помощью клавиши , при условии, что она находится в фо- кусе. По умолчанию нажать кнопку позволяет только клавиша <Пробел>. В диалоговых окнах для всех кнопок по умолчанию указано значение
True
, а для остальных окон — значение
False
;
 setDefault(<Флаг>)
— задает кнопку по умолчанию. Метод работает только в диалого- вых окнах. Эта кнопка может быть нажата с помощью клавиши , когда фокус ввода установлен на другой компонент, — например, на текстовое поле;
 setMenu()
— устанавливает всплывающее меню, которое будет отображаться при нажатии кнопки. В качестве параметра указывается экземпляр класса
QMenu
;

Глава 21. Основные компоненты
463
 menu()
— возвращает ссылку на всплывающее меню или значение
None
;
 showMenu()
— отображает всплывающее меню. Метод является слотом.
21.3. Переключатель
Переключатели (иногда их называют радиокнопками) всегда используются группами.
В такой группе может быть установлен только один переключатель — при попытке устано- вить другой переключатель ранее установленный сбрасывается. Для объединения переклю- чателей в группу можно воспользоваться классом
QGroupBox
, который мы уже рассматрива- ли в разд. 20.7, а также классом
QButtonGroup
Переключатель реализуется классом
QRadioButton
. Иерархия наследования:
(QObject, QPaintDevice) — QWidget — QAbstractButton — QRadioButton
Конструктор класса
QRadioButton имеет два формата:
<Объект> = QRadioButton([parent=<Родитель>])
<Объект> = QRadioButton(<Текст>[, parent=<Родитель>])
Класс
QRadioButton наследует все методы класса
QAbstractButton
(см. разд. 21.2). Устано- вить или сбросить переключатель позволяет метод setChecked()
, а проверить его текущее состояние можно с помощью метода isChecked()
. Отследить изменение состояния можно в обработчике сигнала toggled(<Состояние>)
, в параметре которого передается логическая величина, указывающая новое состояние переключателя.
21.4. Флажок
Флажок предназначен для включения или выключения какой-либо опции и может нахо- диться в нескольких состояниях: установленном, сброшенном и промежуточном (неопреде- ленном) — последнее состояние может быть запрещено программно. Флажок реализуется с помощью класса
QCheckBox
. Иерархия наследования:
(QObject, QPaintDevice) — QWidget — QAbstractButton — QCheckBox
Конструктор класса
QCheckBox имеет два формата:
<Объект> = QCheckBox([parent=<Родитель>])
<Объект> = QCheckBox(<Текст>[, parent=<Родитель>])
Класс
QCheckBox наследует все методы класса
QAbstractButton
(см. разд. 21.2), а также до- бавляет несколько новых:
 setCheckState(<Статус>)
— задает состояние флажка. Могут быть указаны следующие атрибуты класса
QtCore.Qt
:

Unchecked

0
— флажок сброшен;

PartiallyChecked

1
— флажок находится в промежуточном состоянии;

Checked

2
— флажок установлен;
 checkState()
— возвращает текущее состояние флажка;
 setTristate([<Флаг>=True])
— если в качестве параметра указано значение
True
(значе- ние по умолчанию), флажок может находиться во всех трех состояниях. По умолчанию поддерживаются только установленное и сброшенное состояния;

464
Часть II. Библиотека PyQt 5
 isTristate()
— возвращает значение
True
, если флажок поддерживает три состояния, и
False
— если только два.
Чтобы перехватить изменение состояния флажка, следует назначить обработчик сигнала stateChanged(<Состояние>)
. Через параметр внутри обработчика доступно новое состояние флажка, заданное в виде целого числа.
Если используется флажок, поддерживающий только два состояния, установить или сбро- сить его позволяет метод setChecked()
, а проверить текущее состояние — метод isChecked()
Обработать изменение состояния можно в обработчике сигнала toggled(<Состояние>)
, па- раметр которого имеет логический тип.
21.5. Однострочное текстовое поле
Однострочное текстовое поле предназначено для ввода и редактирования текста небольшо- го объема. С его помощью можно также отобразить вводимые символы в виде звездочек
(чтобы скрыть пароль) или вообще не отображать их (что позволит скрыть длину пароля).
Поле поддерживает технологию drag & drop, стандартные комбинации клавиш быстрого доступа, работу с буфером обмена и многое другое.
Однострочное текстовое поле реализуется классом
QLineEdit
. Иерархия наследования:
(QObject, QPaintDevice) — QWidget — QLineEdit
Конструктор класса
QLineEdit имеет два формата:
<Объект> = QLineEdit([parent=<Родитель>])
<Объект> = QLineEdit(<Текст>[, parent=<Родитель>])
В параметре parent указывается ссылка на родительский компонент. Если родитель не ука- зан или имеет значение
None
, компонент будет обладать своим собственным окном. Пара- метр
<Текст>
позволяет задать текст, который будет отображен в текстовом поле.
21.5.1. Основные методы и сигналы
Класс
QLineEdit поддерживает следующие методы (полный их список смотрите на страни- це https://doc.qt.io/qt-5/qlineedit.html):
 setText(<Текст>)
— помещает указанный текст в поле. Метод является слотом;
 insert(<Текст>)
— вставляет текст в текущую позицию текстового курсора. Если в поле был выделен фрагмент, он будет удален;
 text()
— возвращает текст, содержащийся в текстовом поле;
 displayText()
— возвращает текст, который видит пользователь. Результат зависит от режима отображения, заданного с помощью метода setEchoMode()
, — например, в ре- жиме
Password строка будет состоять из звездочек;
 clear()
— удаляет весь текст из поля. Метод является слотом;
 backspace()
— удаляет выделенный фрагмент. Если выделенного фрагмента нет, удаля- ет символ, стоящий слева от текстового курсора;
 del()
— удаляет выделенный фрагмент. Если выделенного фрагмента нет, удаляет сим- вол, стоящий справа от текстового курсора;

Глава 21. Основные компоненты
465
 setSelection(<Индекс>, <Длина>)
— выделяет фрагмент длиной
<Длина>
, начиная с по- зиции
<Индекс>
. Во втором параметре можно указать отрицательное значение;
 selectedText()
— возвращает выделенный фрагмент или пустую строку, если ничего не выделено;
 selectAll()
— выделяет весь текст в поле. Метод является слотом;
 selectionStart()
— возвращает начальный индекс выделенного фрагмента или значе- ние
-1
, если ничего не выделено;
 hasSelectedText()
— возвращает значение
True
, если поле содержит выделенный фраг- мент, и
False
— в противном случае;
 deselect()
— снимает выделение;
 isModified()
— возвращает
True
, если текст в поле был изменен пользователем, и
False
— в противном случае. Отметьте, что вызов метода setText()
помечает поле как неизмененное;
1   ...   38   39   40   41   42   43   44   45   ...   83


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