from PyQt6.QtWidgets import QApplication, QWidget, QCheckBox, QHBoxLayout, QLabel, QVBoxLayout
from PyQt6.QtGui import QIcon, QFont
from PyQt6.QtCore import QSize
import sys
class Window(QWidget):
def __init__(self):
super().__init__()
self.setGeometry(200, 200, 700, 400)
self.setWindowTitle("PyQt6 QCheckBox")
self.setWindowIcon(QIcon('images/python.png'))
hbox = QHBoxLayout()
self.check1 = QCheckBox("Python")
self.check1.setIcon(QIcon("images/py.png"))
self.check1.setIconSize(QSize(40, 40))
self.check1.setFont(QFont("Sanserif", 13))
self.check1.stateChanged.connect(self.item_selected)
self.check2 = QCheckBox("Java")
self.check2.setIcon(QIcon("images/java.png"))
self.check2.setIconSize(QSize(40, 40))
self.check2.setFont(QFont("Sanserif", 13))
self.check2.stateChanged.connect(self.item_selected)
self.check3 = QCheckBox("JavaScript")
self.check3.setIcon(QIcon("images/javascript.png"))
self.check3.setIconSize(QSize(40, 40))
self.check3.setFont(QFont("Sanserif", 13))
self.check3.stateChanged.connect(self.item_selected)
# Метка с результатом выбора
self.label = QLabel("Вы ничего не выбрали")
self.label.setFont(QFont("Sanserif", 15))
# Метка-счётчик
self.counter_label = QLabel("Отмечено: 0 из 3")
self.counter_label.setFont(QFont("Sanserif", 15))
vbox = QVBoxLayout()
vbox.addWidget(self.label)
vbox.addWidget(self.counter_label)
hbox.addWidget(self.check1)
hbox.addWidget(self.check2)
hbox.addWidget(self.check3)
vbox.addLayout(hbox)
self.setLayout(vbox)
def item_selected(self):
items = []
if self.check1.isChecked():
items.append(self.check1.text())
if self.check2.isChecked():
items.append(self.check2.text())
if self.check3.isChecked():
items.append(self.check3.text())
n = len(items)
# Обновляем счётчик
self.counter_label.setText(f"Отмечено: {n} из 3")
if n == 0:
self.label.setText("Вы ничего не выбрали")
return
if n == 1:
word = "курс"
elif n in (2, 3, 4):
word = "курса"
else:
word = "курсов"
self.label.setText(f"Вы выбрали: {n} {word}")
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec())