0 / 0 / 0
Регистрация: 30.12.2021
Сообщений: 68
PyQt5

Где ошибка в компоновке checkbox?

07.01.2022, 00:42. Показов 1398. Ответов 10

Студворк — интернет-сервис помощи студентам
есть код его задача вывести окно со строкой кнопками и чекбоксами
проблема в чекбоксах мне нужно что бы строка с кнокой "ок" были сверху в одной строке
а чекбоксы выводились сверху вниз по 12,но мой код не работает
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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_())
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.01.2022, 00:42
Ответы с готовыми решениями:

Предварительная компоновка dll при компоновке exe файла. Где ошибка?
создал длл файл. /*********************************************************** Module: Dll.h Хидер файл дллки. ...

Ошибка при компоновке
Вот быдлокод: #include "stdafx.h" #include <iostream> using namespace std; class Cat{ public: Cat(int initalAge); ~Cat(); ...

Ошибка LNK1107 при компоновке приложения для EFI
Здравствуйте. Я собрался попробовать программировать под EFI. Нашёл такую инструкцию. Делал по ней, в т.ч. и для эксперимента взял пример...

10
172 / 112 / 65
Регистрация: 26.06.2020
Сообщений: 334
15.01.2022, 02:40
Цитата Сообщение от daicha Посмотреть сообщение
мне нужно что бы строка с кнокой "ок" были сверху в одной строке
а чекбоксы выводились сверху вниз по 12,но мой код не работает
Так?
Миниатюры
Где ошибка в компоновке checkbox?  
0
172 / 112 / 65
Регистрация: 26.06.2020
Сообщений: 334
15.01.2022, 02:43
Цитата Сообщение от daicha Посмотреть сообщение
но мой код не работает
Конкретней.

Добавлено через 2 минуты
Цитата Сообщение от daicha Посмотреть сообщение
Python
1
self.j = [] #тут наименования чекбоксов их может быть как меньше 12 так все 47
И откуда тут возьмутся названия чекбоксов?
0
0 / 0 / 0
Регистрация: 30.12.2021
Сообщений: 68
16.01.2022, 02:52  [ТС]
там они из файла импортируются ,но представим что они там есть

Добавлено через 28 секунд
да но потом должно переходит на следующий столбец
0
172 / 112 / 65
Регистрация: 26.06.2020
Сообщений: 334
16.01.2022, 02:57
Цитата Сообщение от daicha Посмотреть сообщение
но представим что они там есть
Пропиши в коде, чтобы они были, и чтобы было видно, что не так работает.

Добавлено через 1 минуту
Цитата Сообщение от daicha Посмотреть сообщение
да но потом должно переходит на следующий столбец
В столбце по 12 чекбоксов?

Добавлено через 17 секунд
Цитата Сообщение от daicha Посмотреть сообщение
да но потом должно переходит на следующий столбец
В столбце по 12 чекбоксов?
0
0 / 0 / 0
Регистрация: 30.12.2021
Сообщений: 68
16.01.2022, 04:39  [ТС]
ошибка в том что все чекбоксы накладываются на друг друга так как окно выводится без возможности масштабирования ,по этому нужно именно по 12 выводить в каждом столбце но переход на новый столбец не работает

Добавлено через 52 минуты
имменно в столбце по 12 чекбоксов

Добавлено через 35 минут
Я не нашел как отредактировать статью поэтому напишу тут, если не сложно просто скпируйте строчку кода с массивлм
Python
1
self.j = list('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')
Допустим это будут буквы
Должно быть 5 столбцов в которых 4 по 12 и последний с четырмя
0
172 / 112 / 65
Регистрация: 26.06.2020
Сообщений: 334
17.01.2022, 00:04
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
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 = list('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ') #тут наименования чекбоксов их может быть как меньше 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
        k = 0;
        for ii in range(j):
            
            vlayout = QtWidgets.QVBoxLayout()
            
            for i in range(12):
                
                try:
                    self.e = QtWidgets.QCheckBox(self.j[k])
                    self.z.append(self.e)
                    vlayout.addWidget(self.e)
                except:
                    break
                k += 1
            self.hhlayout.addLayout(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_())
0
172 / 112 / 65
Регистрация: 26.06.2020
Сообщений: 334
17.01.2022, 00:08
...
Миниатюры
Где ошибка в компоновке checkbox?  
0
172 / 112 / 65
Регистрация: 26.06.2020
Сообщений: 334
17.01.2022, 01:56
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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 = list('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ') #тут наименования чекбоксов их может быть как меньше 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
        k = 0;
        for ii in range(j):
            vlayout = QtWidgets.QVBoxLayout()
            
            for i in range(12):
                
                try:
                    self.e = QtWidgets.QCheckBox(self.j[k])
                    self.z.append(self.e)
                    vlayout.addWidget(self.e)
                except:
                    vlayout.addStretch(1)
                    break
                k += 1
 
            self.hhlayout.addLayout(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_())
Миниатюры
Где ошибка в компоновке checkbox?  
0
172 / 112 / 65
Регистрация: 26.06.2020
Сообщений: 334
17.01.2022, 04:27
Лучший ответ Сообщение было отмечено daicha как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
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 = list('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ') #тут наименования чекбоксов их может быть как меньше 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
        k = 0;
        flag = False
        for ii in range(j):
            
            vlayout = QtWidgets.QVBoxLayout()
            for i in range(12):
                
                self.e = QtWidgets.QCheckBox(self.j[k])
                self.z.append(self.e)
                vlayout.addWidget(self.e)
                
                k += 1
                if k == len(self.j):
                    vlayout.addStretch()
                    break
            
            self.hhlayout.addLayout(vlayout)
            if k == len(self.j):
                vlayout = QtWidgets.QVBoxLayout()
                vlayout.addStretch()
                vlayout.addWidget(qbtn)
                self.hhlayout.addStretch()
                self.hhlayout.addLayout(vlayout)
                break;
        
        self.vvlayout.addStretch()
        self.vvlayout.addLayout(self.hhlayout)
        self.vvlayout.addStretch()
        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_())
1
0 / 0 / 0
Регистрация: 30.12.2021
Сообщений: 68
17.01.2022, 23:41  [ТС]
благодарю
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.01.2022, 23:41
Помогаю со студенческими работами здесь

Ошибка при компоновке объектного файла - несовместимость архитектуры (разрядности)
Начал изучать NASM по книге где программы пишутся под процессор IA32 - не сработало:( Говорит что процессор i386 не поддерживает. Так я...

стивен прата стр 433 листинг 9.1 а также 9.2 и 9.3 ошибка при компоновке файлов
компилятор visual studio 2013 в книге написано что не надо включать #include. я так и не понял почему не надо, если здесь он защищен. ...

Ошибка при компоновке. Как исправит код или команды компиляции и компоновки?
Ошибка /usr/bin/ld: hola.o: relocation R_X86_64_PC32 against symbol `puts@@GLIBC_2.2.5' can not be used when making a PIE object;...

Ошибка при компоновке: "link: cannot create link 'prog.obj' to '/subsystem:windows': No such file or directory"
Здравствуйте, можете помочь с линковщиком. C:\Users\snxx\Desktop>ml.exe /c /coff prog.asm Microsoft (R) Macro Assembler Version...

Препод говорит где - то ошибка в синтаксисе. Сам код взят из "жефри Рихтер - Создание эффективных WIN32 приложений" Пожалуйста, подскажите где ошибка!
// получаем код ошибки DWORD dwError = GetDlgItemInt(hwnd, IDC_ERRORCODE, NULL, FALSE); HLOCAL hlocal = NULL; // буфер для строки с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

Новые блоги и статьи
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru