есть код его задача вывести окно со строкой кнопками и чекбоксами
проблема в чекбоксах мне нужно что бы строка с кнокой "ок" были сверху в одной строке
а чекбоксы выводились сверху вниз по 12,но мой код не работает
import sys,time,math
from PyQt5 import QtWidgets, QtCore, QtGui
from PyQt5.QtWidgets import QWidget, QPushButton, QApplication
from PyQt5.QtCore import QCoreApplication
class category(QtWidgets.QWidget):
def __init__(self):
global t
t =[]
super().__init__()
self.setWindowTitle('Категории')
self.setGeometry(300, 300, 800, 400)
qbtn = QPushButton('Quit', self)
qbtn.resize(qbtn.sizeHint())
qbtn.move(705, 370)
qbtn.clicked.connect(self.close)
okbtn = QPushButton('ок', self)
okbtn.resize(qbtn.sizeHint())
self.j = [] #тут наименования чекбоксов их может быть как меньше 12 так все 47
self.z = []
self.formLayout = QtWidgets.QFormLayout()
n = QtWidgets.QLineEdit()
self.formLayout.addRow("По сколько:", n)
self.vlayout = QtWidgets.QVBoxLayout()
self.vvlayout = QtWidgets.QVBoxLayout()
self.hlayout = QtWidgets.QHBoxLayout()
self.hhlayout = QtWidgets.QHBoxLayout()
self.hlayout.addLayout(self.formLayout)
self.hlayout.addWidget(okbtn)
self.vvlayout.addLayout(self.hlayout)
j =math.ceil(len(self.j)/12)
jj =len(self.j)%12
for ii in range(j):
if j == 1:
for i in self.j:
self.e = QtWidgets.QCheckBox(i)
self.z.append(self.e)
self.vlayout.addWidget(self.e)
if j > 1 and ii != j-1:
for i in range(12):
self.e = QtWidgets.QCheckBox(self.j[i])
self.z.append(self.e)
self.vlayout.addWidget(self.e)
else:
for i in range(jj):
self.e = QtWidgets.QCheckBox(self.j[i])
self.z.append(self.e)
self.vlayout.addWidget(self.e)
self.hhlayout.addLayout(self.vlayout)
self.vvlayout.addLayout(self.hhlayout)
self.setLayout(self.vvlayout)
for i in range(len(self.z)):
self.z[i].stateChanged.connect(
lambda state=self.z[i].isChecked(), d = self.j[i] :self.selectBooks(state, d))
def selectBooks(self, toggle, no):
if toggle == QtCore.Qt.Checked:
t.append(no)
else:
t.remove(no)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
w = category()
w.show()
sys.exit(app.exec_())