Флажок используется для выбора нуля или более вариантов из многих вариантов с помощью графического пользовательского интерфейса. Форма с флажком может быть создана с помощью класса QCheckBox в скрипте Python или с помощью виджета QCheckBox в Qt Designer без написания какого-либо скрипта.
Когда форма с флажком создается с использованием класса QCheckBox, тогда вызывается функция stateChanged.connect(), чтобы применить действие, выполненное пользователем. Если пользователь установил какой-либо параметр флажка, тогда значение QtCore.Qt.checked будет True. С помощью класса QbuttonGroup можно создать несколько флажков с одним выбором, например Radio Button.
В этой статье показано, как создать форму с флажком, написав скрипт Python.
Класс QCheckBox имеет множество функций для выполнения различных типов задач с флажком. Некоторые наиболее часто используемые методы этого класса описаны ниже:
Название метода | Цель |
---|---|
isChecked() | Возвращает логическое значение. Когда пользователь щелкает, чтобы установить флажок, он возвращает True, в противном случае он возвращает False. |
setChecked () | Он используется для изменения состояния флажка. Установлено значение True, чтобы флажок был установлен, а значение False – чтобы снять флажок. |
text() | Он используется для чтения метки флажка. |
setText() | Он используется для установки метки флажка. |
isTriState() | Возвращает логическое значение. Он используется для проверки тройного состояния, чтобы узнать, включен ли флажок. |
setTriState() | Он используется для включения третьего состояния флажка, который указывает нейтральное состояние. |
Использование флажка показано в этом разделе на различных типах примеров. Использование одного флажка, как показано в первом примере, и использование нескольких флажков показано во втором примере.
В этом примере показан способ создания одного флажка с использованием класса QCheckBox и считывание входного значения флажка, предоставленного пользователем. Необходимые модули импортируются в начале скрипта. Метка используется в поле вышеупомянутого флажка для предоставления информации пользователю. Если пользователь установит флажок, чтобы проверить, скрипт напечатает: «Ух ты! Вы любите программировать», иначе сценарий напечатает: «О нет! Вы не любите программировать».
import sys
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtWidgets import QMainWindow, QCheckBox, QLabel, QVBoxLayout, QDesktopWidget
# Определите класс для создания формы с одним флажком
class SingleCheckbox(QMainWindow):
def __init__(self):
super().__init__()
# Создайте текст метки для пользователя
lb = QLabel(“Вам нравится программирование?”, self)
lb.setGeometry(20, 20, 200, 20)
lb.move(20, 20)
# Создайте флажок с меткой
cb = QCheckBox(‘Да’, self)
cb.stateChanged.connect(self.Check_Answer)
cb.move(20, 50)
# Установить вертикальную планировку интервала QT
vbox = QVBoxLayout()
vbox.addWidget(lb)
vbox.addWidget(cb)
# Установите заголовок и размер окна
self.setWindowTitle(‘Form with Single Checkbox’)
self.setGeometry(60, 60, 300, 100)
# Отображение окна в центре экрана
win = self.frameGeometry()
pos = QDesktopWidget().availableGeometry().center()
win.moveCenter(pos)
self.move(win.topLeft())
self.show()
# Определите функцию для проверки ввода пользователя
def Check_Answer(self, state):
if state == QtCore.Qt.Checked:
print(“Ух ты! Вы любите программирование.”)
else:
print(“О нет! – Вы не любите программировать.”)
# Создайте объект приложения и выполните его
app = QtWidgets.QApplication(sys.argv)
form = SingleCheckbox()
app.exec()
В этом примере показан метод создания нескольких флажков с использованием класса QCheckbox и чтения нескольких значений нескольких флажков. В окно добавляются две метки и три флажка. Первая метка добавляется в начале флажков для предоставления информации пользователю, а вторая метка добавляется в конец флажков для отображения значений выбранных флажков или флажков.
import sys
from PyQt5.QtWidgets import (QWidget, QCheckBox, QApplication, QVBoxLayout, QLabel, QDesktopWidget)
# Определите класс для создания формы с несколькими флажками
class MultipleCheckbox(QWidget):
def __init__(self):
super().__init__()
# Установите текст метки для пользователя
lb = QLabel(“Выберите свою любимую еду(ы):”, self)
lb.setGeometry(20, 20, 100, 20)
lb.move(20, 20)
# Создайте три флажка
cb1 = QCheckBox(‘Шоколадный торт’, self)
cb1.move(20, 70)
cb1.stateChanged.connect(lambda: self.Selected_Value(cb1))
cb2 = QCheckBox(‘Мороженое’, self)
cb2.move(20, 90)
cb2.stateChanged.connect(lambda: self.Selected_Value(cb2))
cb3 = QCheckBox(‘Макароны’, self)
cb3.move(20, 110)
cb3.stateChanged.connect(lambda: self.Selected_Value(cb3))
self.label = QLabel(‘Ничего не выбрано’)
self.label.move(20, 150)
# Установить вертикальную планировку интервала QT
vbox = QVBoxLayout()
vbox.addWidget(lb)
vbox.addWidget(cb1)
vbox.addWidget(cb2)
vbox.addWidget(cb3)
vbox.addWidget(self.label)
self.setLayout(vbox)
self.setWindowTitle(‘Форма с несколькими флажками’)
self.setGeometry(60, 60, 350, 200)
self.lblText = ”
# Отображение окна в центре экрана
win = self.frameGeometry()
pos = QDesktopWidget().availableGeometry().center()
win.moveCenter(pos)
self.move(win.topLeft())
self.show()
# Определите функцию для чтения входных данных пользователя
def Selected_Value(self, btn):
if self.lblText != ”:
str = self.lblText
strArray = str.split(‘ ,’)
self.lblText = ”
for val in strArray:
if btn.text() != val:
if self.lblText == ”:
self.lblText = val
else:
self.lblText += ‘ ,’ + val
if btn.isChecked() == True:
if self.lblText == ”:
self.lblText = btn.text()
else:
self.lblText += ‘ ,’ + btn.text()
else:
if btn.isChecked() == True:
if self.lblText == ”:
self.lblText = btn.text()
else:
self.lblText += ‘ ,’ + btn.text()
self.label.setText(‘Вы выбрали \n’ + self.lblText)
# Создайте объект приложения и выполните его
app = QApplication(sys.argv)
ex = MultipleCheckbox()
sys.exit(app.exec_())
Значение по умолчанию для второй метки – «Ничего не выбрано», и значение метки будет изменено, когда какой-либо флажок установлен или снят пользователем.
Способ определения одного или нескольких флажков и чтения значений выбранных флажков был объяснен в этом руководстве на двух простых примерах. Группы флажков могут быть определены для выбора определенного флажка из группы, которая здесь не показана.