# QT6 CheckBox, SpinBox, ComboBox

**QCheckbox**

Это кнопка выбора, которую можно включить (установить флажок) или выключить (снять флажок). Флажки обычно используются для обозначения функций в приложении, которые можно включать или отключать, не затрагивая другие. При изменении состояния флажка выдается сигнал StateChanged(). Метод IsChecked() используется для запроса, установлен ли флажок.

Методы:

<table border="1" id="bkmrk-%D0%9C%D0%B5%D1%82%D0%BE%D0%B4-%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5-ische" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 13.0358%;"></col><col style="width: 87.0834%;"></col></colgroup><thead><tr><td>Метод</td><td>Описание</td></tr></thead><tbody><tr><td>isChecked()</td><td>  
</td></tr><tr><td>setIcon()</td><td>  
</td></tr><tr><td>setText()</td><td>  
</td></tr><tr><td>setChecked()</td><td>  
</td></tr></tbody></table>

Сигналы:

stateChanged

**QSpinbox**

QSpinBox предназначен для обработки целых чисел и дискретных наборов значений, позволяет выбирать значение, нажимая кнопки вверх / вниз или нажимая клавиши вверх / вниз на клавиатуре, чтобы увеличить / уменьшить отображаемое в данный момент значение. Также возможно ввести значение вручную.

Методы:

<table border="1" id="bkmrk-%D0%9C%D0%B5%D1%82%D0%BE%D0%B4-%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5-value" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 13.0358%;"></col><col style="width: 87.0834%;"></col></colgroup><thead><tr><td>Метод</td><td>Описание</td></tr></thead><tbody><tr><td>value()</td><td>текущее выбранное целое значение</td></tr><tr><td>text()</td><td>отображения текста в окне прокрутки</td></tr><tr><td>setMinimum()

</td><td>  
</td></tr><tr><td>setMaximum()</td><td>  
</td></tr><tr><td>setPrefix()</td><td>текстовый префикс, добавляемый перед значением, возвращаемым полем прокрутки. </td></tr><tr><td>setSuffix()</td><td>текст суффикса, добавляемый к значению, возвращаемому блоком spin.</td></tr></tbody></table>

Сигналы:

valueChanged()

editingFinished() выдается при потере фокуса на spinbox. Предполагаю, актуально для приложений с web backend при передаче финальных данных.

```python
from PyQt6.QtWidgets import QApplication, QWidget, QLabel, QHBoxLayout, QLineEdit
from PyQt6.QtWidgets import QSpinBox
import sys 
 
class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setGeometry(200,200, 700, 400)
        self.setWindowTitle("Python GUI Development")
        self.create_button()

    def create_button(self):
        hbox = QHBoxLayout()
        label = QLabel("Laptop price: ")
        self.lineedit = QLineEdit()
        self.spinbox = QSpinBox()
        self.spinbox.valueChanged.connect(self.spin_selected)

        self.total_result = QLineEdit()

        hbox.addWidget(label)
        hbox.addWidget(self.lineedit)
        hbox.addWidget(self.spinbox)
        hbox.addWidget(self.total_result)
        self.setLayout(hbox)

    def spin_selected(self):
        if self.lineedit.text() != 0:
            price = int(self.lineedit.text())
            totalPrice = self.spinbox.value() * price
            self.total_result.setText(str(totalPrice))
 
app = QApplication(sys.argv) 
window = Window() 
window.show() 
sys.exit(app.exec())
```

**QComboBox**

Виджет выбора, отображающий текущий элемент. Также отображает список выбираемых элементов. Может быть редактируемым.

Также есть специализированный ComboBox: для выбора шрифтов (fontComboBox).

Методы:

<table border="1" id="bkmrk-%D0%9C%D0%B5%D1%82%D0%BE%D0%B4-%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5-setit" style="border-collapse: collapse; width: 100%; height: 331.563px;"><colgroup><col style="width: 15.1345%;"></col><col style="width: 84.8655%;"></col></colgroup><thead><tr style="height: 29.7969px;"><td style="height: 29.7969px;">Метод</td><td style="height: 29.7969px;">Описание</td></tr></thead><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px;">setItemText()</td><td style="height: 29.7969px;">Устанавливает или изменяет текст элемента в поле со списком. </td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">removeItem()</td><td style="height: 29.7969px;">Удаляет определенный элемент из поля со списком. </td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">clear()</td><td style="height: 29.7969px;">Удаляет все элементы из поля со списком.</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">currentText()</td><td style="height: 29.7969px;">Возвращает текст текущего элемента, то есть элемента, который выбран в данный момент. </td></tr><tr style="height: 46.5938px;"><td style="height: 46.5938px;">setCurrentIndex()</td><td style="height: 46.5938px;">Устанавливает текущий индекс поля со списком, то есть задает желаемый элемент в поле со списком в качестве выбранного в данный момент элемента. </td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">count()</td><td style="height: 29.7969px;">Возвращает количество элементов в поле со списком. </td></tr><tr style="height: 46.5938px;"><td style="height: 46.5938px;">setEditable()</td><td style="height: 46.5938px;">Сделайте поле со списком доступным для редактирования, то есть пользователь можно редактировать элементы в поле со списком. </td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">addItem()</td><td style="height: 29.7969px;">Добавляет указанное содержимое в поле со списком. </td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">itemText()</td><td style="height: 29.7969px;">Возвращает текст в указанное расположение индекса в поле со списком.</td></tr><tr><td>currentIndex()</td><td>Возвращает индексное местоположение текущего выбранного элемента в поле со списком. Если поле со списком пусто или в поле со списком в данный момент не выбран ни один элемент, метод вернет значение -1 в качестве индекса.</td></tr></tbody></table>

Сигналы

currentIndexChanged() выбор нового элемента

editTextChanged() изменение текста в редактируемом комбобоксе

```python
from PyQt6.QtWidgets import QApplication, QWidget, QComboBox, QLabel, QHBoxLayout, QVBoxLayout
import sys 
 
class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setGeometry(200,200, 700, 400)
        self.setWindowTitle("Python GUI Development")
        self.create_button()

    def create_button(self):
        hbox = QHBoxLayout()
        label = QLabel('Select type: ')
        self.combo = QComboBox()
        self.combo.addItem('')
        self.combo.addItem('Current account')
        self.combo.addItem('Deposite account')
        self.combo.addItem('Saving account')
        self.combo.currentTextChanged.connect(self.updresult)
        hbox.addWidget(label)
        hbox.addWidget(self.combo)
        
        vbox = QVBoxLayout()
        vbox.addLayout(hbox)

        self.label_result = QLabel('')
        vbox.addWidget(self.label_result)
        
        self.setLayout(vbox)

    def updresult(self):
        self.label_result.setText('Your type: ' + self.combo.currentText())
 
app = QApplication(sys.argv) 
window = Window() 
window.show() 
sys.exit(app.exec())
```