PyQt QPushButton в Python — создание кнопок

Класс PyQt QPushButton позволяет создать виджет Button в Python, который может быть кнопкой нажатия или кнопкой-переключателем.

Содержание

Создание кнопки с PyQt QPushButton

Чтобы создать кнопку, выполните следующие действия:

  • Сначала импортируем QPushButton из модуля PyQt6.QtWidgets:
from PyQt6.QtWidgets import QPushButton
  • Во-вторых, вызовите QPushButton() с текстом, который отображается на кнопке:
button = QPushButton('Click Me')
  • В-третьих, соедините сигнал нажатия с вызываемым:
button.clicked.connect(self.on_clicked)

On_clicked — это метод, который выполняется при нажатии кнопки.

Ниже показана полная программа, отображающая кнопку в окне:

import sys
from PyQt6.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout


class MainWindow(QWidget):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.setWindowTitle('PyQt QPushButton Widget')
        self.setGeometry(100, 100, 320, 210)

        button = QPushButton('Click Me')

        # place the widget on the window
        layout = QVBoxLayout()
        layout.addWidget(button)
        self.setLayout(layout)

        # show the window
        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)

    # create the main window
    window = MainWindow()

    # start the event loop
    sys.exit(app.exec())

Выход:

Отображение кнопки

Создание кнопки с иконкой

Чтобы создать кнопку с изображением, выполните следующие действия:

  • Сначала импортируйте QIcon из модуля PyQt6.QtGui:
from PyQt6.QtGui import QIcon
  • Во-вторых, создайте объект QPushButton:
button = QPushButton('Delete')
  • В-третьих, добавьте значок кнопки, вызвав метод setIcon() объекта QPushButton с объектом QIcon:
button.setIcon(QIcon('trash.png'))

Обратите внимание, что объект QIcon принимает путь к файлу значка. Чтобы отобразить изображение trash.png, вы можете загрузить его здесь:

Иконка trash.png

Чтобы сделать кнопку более значимой, вы можете задать ее размер, вызвав метод setFixedSize().

Размер определяется объектом QSize с двумя аргументами width и height. Обратите внимание, что вам нужно импортировать класс QSize из модуля PyQt6.QtCore.

Следующая программа показывает, как отобразить кнопку с изображением:

import sys
from PyQt6.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout
from PyQt6.QtCore import QSize
from PyQt6.QtGui import QIcon


class MainWindow(QWidget):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.setWindowTitle('PyQt QPushButton Widget')
        self.setGeometry(100, 100, 320, 210)

        button = QPushButton('Delete')
        button.setIcon(QIcon('trash.png'))

        button.setFixedSize(QSize(100, 30))

        # place the widget on the window
        layout = QVBoxLayout()
        layout.addWidget(button)
        self.setLayout(layout)

        # show the window
        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)

    # create the main window
    window = MainWindow()

    # start the event loop
    sys.exit(app.exec())

Выход:

PyQt QPushButton - отображение кнопки с иконкой

Создание кнопки-переключателя

Класс QPushButton имеет свойство checkable, которое позволяет использовать кнопку в качестве переключателя. Кнопка-переключатель имеет состояние вкл/выкл. Если кнопка включена, отмеченная кнопка имеет значение true. В противном случае — false.

Для кнопки-переключателя сигнал нажатия отправляет состояние кнопки: включено или выключено.

Следующая программа отображает окно с кнопкой-переключателем:

import sys
from PyQt6.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout


class MainWindow(QWidget):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.setWindowTitle('PyQt QPushButton Widget')
        self.setGeometry(100, 100, 320, 210)

        button = QPushButton('Toggle Me')
        button.setCheckable(True)
        button.clicked.connect(self.on_toggle)

        # place the button on the window
        layout = QVBoxLayout()
        layout.addWidget(button)
        self.setLayout(layout)

        # show the window
        self.show()

    def on_toggle(self, checked):
        print(checked)


if __name__ == '__main__':
    app = QApplication(sys.argv)

    # create the main window
    window = MainWindow()

    # start the event loop
    sys.exit(app.exec())
Похожие посты
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *