# QT6 Buttons

**QPushButtons**

Командная кнопка является наиболее часто используемым виджетом в любом графическом интерфейсе пользователя. Нажатие (click) кнопки является командой компьютеру выполнить какое-либо действие. Типичными кнопками являются "ОК", "Применить", "Отмена", "Закрыть"., Да, Нет и Справка.   
Командная кнопка имеет прямоугольную форму и обычно отображает текстовую метку, описывающую ее действие. Можно указать комбинацию клавиш, указав перед нужным символом амперсанд в тексте.   
чтобы отобразить кнопку в приложении, вам необходимо создать экземпляр класса QPushButton.

```python
from PyQt6.QtWidgets import QApplication, QWidget, QPushButton
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):
        btn = QPushButton("Click", self)
 
app = QApplication(sys.argv) 
window = Window() 
window.show() 
sys.exit(app.exec())
```

Методы класса:

<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-sette" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 16.2501%;"></col><col style="width: 83.8691%;"></col></colgroup><thead><tr><td class="align-center">**Метод**</td><td class="align-center">**Описание**</td></tr></thead><tbody><tr><td>setText()</td><td>Изменение текста</td></tr><tr><td>setIcon()</td><td>Добавление иконки на кнопку

btn.setIcon(QIcon("images/python.png"))

</td></tr><tr><td>  
</td><td>Изменение размера иконки

```python
from PyQt6.QtCore import QSize
from PyQt6.QtGui import QIcon 

    def create_button(self):
        btn = QPushButton("Click", self)
        btn.setGeometry(100, 100, 130, 50)
        btn.setIcon(QIcon('pyqt6lessons\images\python.png'))
        btn.setIconSize(QSize(36,36))
```

</td></tr><tr><td>setGeometry()</td><td>Настройка положения кнопки, </td></tr><tr><td>setMenu()</td><td>Всплывающее меню над кнопкой. Сначала создать объект QMenu, класс QMenu связан с модулем QtWidgets, класс QMenu предоставляет виджет меню для использования в строках меню, контекстных меню и других всплывающих меню.   
Виджет меню - это меню выбора. Это может быть как выпадающее меню в строке меню, так и отдельное контекстное меню. Выпадающие меню отображаются в строке меню, когда пользователь щелкает на соответствующем элементе или нажимает указанную комбинацию клавиш.

```python
menu = QMenu() 
menu.setFont(QFont("Times", 14, 
QFont.Weight.ExtraBold)) 
menu.setStyleSheet('background-color:green') 
menu.addAction("Copy") 
menu.addAction("Cut") 
menu.addAction("Paste") 
btn.setMenu(menu) 
```

 [![изображение.png](http://bobrobotirk.ru/uploads/images/gallery/2026-01/scaled-1680-/UnYizobrazenie.png)](http://bobrobotirk.ru/uploads/images/gallery/2026-01/UnYizobrazenie.png)

</td></tr><tr><td>setFont()</td><td>Настройка шрифта

btn.setFont(QFont("Times", 14, QFont.Weight.ExtraBold))

</td></tr><tr><td>setCheckable()</td><td>Вид кнопки при нажатии меняется. Выделяется и снимается выделение.

</td></tr></tbody></table>

**QRadioButtons**

Кнопка, которую можно включить (установить флажок) или выключить (снять флажок). Переключатели обычно предоставляют  
пользователю возможность выбора "из многих". В группе переключателей одновременно может быть установлен только один переключатель, если пользователь выбирает другую кнопку, ранее выбранная кнопка отключается. Существуют различные методы, которые вы можете использовать, например, у нас есть IsChecked(), и он возвращает логическое значение true, если кнопка находится в выбранном состоянии, или у нас есть метод setIcon(), с помощью которого мы можем добавить значок для радиокнопки, а также setText(), который задает текст выбранной кнопки. Также существуют различные сигналы, которые вы можете использовать, например, у нас есть переключаемый сигнал, который используется всякий раз, когда переключатель меняет свое состояние с установленного на снятое и наоборот.

RadioButtons объединенные в одном hbox рассматриваются как зависимые.

```python
from PyQt6.QtWidgets import QApplication, QWidget, QHBoxLayout, QRadioButton, QLabel
from PyQt6.QtWidgets import 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()

        self.label = QLabel("", self)
        vbox = QVBoxLayout()
        vbox.addWidget(self.label)
        vbox.addLayout(hbox)

        rad1 = QRadioButton("Python")
        rad1.toggled.connect(self.radio_selected)
        hbox.addWidget(rad1)
        rad2 = QRadioButton("Java")
        rad2.toggled.connect(self.radio_selected)
        hbox.addWidget(rad2)
        rad3 = QRadioButton("JavaScript")
        rad3.toggled.connect(self.radio_selected)
        hbox.addWidget(rad3)

        self.setLayout(vbox)

    def radio_selected(self):
        radio_btn = self.sender()
        if radio_btn.isChecked():
            self.label.setText(f'Selected: {radio_btn.text()}')

app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec())
```

Методы класса:

<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: 16.2501%;"></col><col style="width: 83.8691%;"></col></colgroup><thead><tr><td class="align-center">**Метод**</td><td class="align-center">**Описание**</td></tr></thead><tbody><tr><td>isChecked()</td><td>Возвращает True если кнопка выбрана</td></tr><tr><td>setChecked()</td><td>Переводит кнопку в выбранное состояние</td></tr><tr><td>setIcon()</td><td>Устанавливает иконку кнопки</td></tr><tr><td>setText()</td><td>Текст</td></tr></tbody></table>