ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 05.12.2023
Просмотров: 861
Скачиваний: 3
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
полужирный")
Глава 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. Основные компоненты
459
Перевод строки в простом тексте осуществляется с помощью символа
\n
, а в тексте в формате HTML — с помощью тега
: label.setText("Текст\nна двух строках")
Внутри текста символ
&
, указанный перед буквой или цифрой, задает комбинацию кла- виш быстрого доступа. В этом случае буква, перед которой указан символ
&
, будет — в качестве подсказки пользователю — подчеркнута. При одновременном нажатии кла- виши
, окажется в фокусе ввода. Чтобы вывести сам символ
&
, необходимо его уд- воить. Если надпись не связана с другим компонентом, символ
&
выводится в составе текста: 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 указывается ссылка на родительский компонент. Если таковой не задан или имеет значение
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()
— удаляет выделенный фрагмент. Если выделенного фрагмента нет, удаляет сим- вол, стоящий справа от текстового курсора;