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, вы можете загрузить его здесь:
Чтобы сделать кнопку более значимой, вы можете задать ее размер, вызвав метод 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())
Выход:
Создание кнопки-переключателя
Класс 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())