Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 30.12.2021
Сообщений: 68
PyQt5

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

07.01.2022, 00:42. Показов 1396. Ответов 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
Сообщений: 333
15.01.2022, 02:40
Цитата Сообщение от daicha Посмотреть сообщение
мне нужно что бы строка с кнокой "ок" были сверху в одной строке
а чекбоксы выводились сверху вниз по 12,но мой код не работает
Так?
Миниатюры
Где ошибка в компоновке checkbox?  
0
172 / 112 / 65
Регистрация: 26.06.2020
Сообщений: 333
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
Сообщений: 333
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
Сообщений: 333
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
Сообщений: 333
17.01.2022, 00:08
...
Миниатюры
Где ошибка в компоновке checkbox?  
0
172 / 112 / 65
Регистрация: 26.06.2020
Сообщений: 333
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
Сообщений: 333
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
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru