Я хочу добавить 4 кнопки в виджет QGroupBox

main.py:

from PyQt5.QtWidgets import QApplication 
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import (
    QApplication, QWidget, 
    QTableWidget, QListWidget, QListWidgetItem,
    QLineEdit, QFormLayout,
    QHBoxLayout, QVBoxLayout, 
    QGroupBox, QButtonGroup, QRadioButton,  
    QPushButton, QLabel, QSpinBox)

app = QApplication([])
win_card = QWidget()
#здесь должны быть параметры окна
win_card.resize(600, 500)
win_card.setWindowTitle('Memory Card')
win_card.move(0, 0)

# віджети, які треба буде розмістити:
btn_menu = QPushButton('Меню')
btn_sleep = QPushButton('Відпочити')
box_Minutes = QSpinBox()
box_Minutes.setValue(30)

btn_answer = QPushButton('Відповісти')
question = QLabel('Яблук')
# Група перемикачів
RadioGroupBox = QGroupBox('Варіанти відповідей')
RadioGroup = QButtonGroup()
rbtn_1 = QRadioButton('1')
rbtn_2 = QRadioButton('2')
rbtn_3 = QRadioButton('3')
rbtn_4 = QRadioButton('4')
RadioGroup.addButton(rbtn_1)
RadioGroup.addButton(rbtn_2)
RadioGroup.addButton(rbtn_3)
RadioGroup.addButton(rbtn_4)

# Панень з результатами
answerGroupBox = QGroupBox('Result')
label_result = QLabel('')
label_correct = QLabel('')
# Розмісти весь вміст в лейаути. Найбільшим лейаутом буде layout_card

# Перемикачі
line = QHBoxLayout()
lineV1 = QVBoxLayout()
lineV2 = QVBoxLayout()

lineV1.addWidget(rbtn_1)
lineV1.addWidget(rbtn_3)
lineV2.addWidget(rbtn_2)
lineV2.addWidget(rbtn_4)
line.addLayout(lineV1)
line.addLayout(lineV2)
###
# Все вікно
layout_card = QVBoxLayout()
layout1 = QHBoxLayout()
layout2 = QHBoxLayout()
layout3 = QHBoxLayout()
layout4 = QHBoxLayout()

layout1.addWidget(btn_menu)
layout1.addWidget(btn_sleep)
layout1.addWidget(box_Minutes)

layout2.addWidget(question)
layout3.addWidget(RadioGroupBox)
layout4.addWidget(btn_answer)

layout_card.addLayout(layout1)
layout_card.addLayout(layout2)
line.addLayout(layout3)
layout_card.addLayout(layout3)
layout_card.addLayout(line)
layout_card.addLayout(layout4)

# Лейаути
win_card.setLayout(layout_card)
win_card.setLayout(line)

win_card.show()
app.exec_()

Я хочу добавить 4 кнопки в окно Варіанти відповідей (QGroupBox).
Что бы они были в рамке и всё.


Ответы (1 шт):

Автор решения: S. Nick

Все у вас очень сложно. Попробуйте так:

from PyQt5.QtWidgets import QApplication 
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import (
    QApplication, QWidget, 
    QTableWidget, QListWidget, QListWidgetItem,
    QLineEdit, QFormLayout,
    QHBoxLayout, QVBoxLayout, 
    QGroupBox, QButtonGroup, QRadioButton,  
    QPushButton, QLabel, QSpinBox)
    
    
class MainWindow(QWidget):
    def __init__(self):
        super().__init__()

        self.resize(600, 500)
        self.setWindowTitle('Memory Card')
# ???        self.move(0, 0)    
        
        self.btn_menu = QPushButton('Меню')
        self.btn_sleep = QPushButton('Відпочити')
        self.box_Minutes = QSpinBox()
        self.box_Minutes.setValue(30)

        self.btn_answer = QPushButton('Відповісти')
        self.question = QLabel('Яблук')

        # Група перемикачів
        self.RadioGroupBox = QGroupBox('Варіанти відповідей')
        self.RadioGroup = QButtonGroup()
        self.rbtn_1 = QRadioButton('1')
        self.rbtn_2 = QRadioButton('2')
        self.rbtn_3 = QRadioButton('3')
        self.rbtn_4 = QRadioButton('4')
        self.RadioGroup.addButton(self.rbtn_1)
        self.RadioGroup.addButton(self.rbtn_2)
        self.RadioGroup.addButton(self.rbtn_3)
        self.RadioGroup.addButton(self.rbtn_4)        

        self.answerGroupBox = QGroupBox('Result')
        self.label_result = QLabel('')
        self.label_correct = QLabel('')

        line = QHBoxLayout(self.RadioGroupBox)               # +++ self.RadioGroupBox
        lineV1 = QVBoxLayout()
        lineV2 = QVBoxLayout()
        lineV1.addWidget(self.rbtn_1)
        lineV1.addWidget(self.rbtn_3)
        lineV2.addWidget(self.rbtn_2)
        lineV2.addWidget(self.rbtn_4)
        line.addLayout(lineV1)
        line.addLayout(lineV2)

        # Все вікно
        layout_card = QVBoxLayout(self)                       # +++ self
        layout1 = QHBoxLayout()
        layout2 = QHBoxLayout()
        layout3 = QHBoxLayout()
        layout4 = QHBoxLayout()

        layout1.addWidget(self.btn_menu)
        layout1.addWidget(self.btn_sleep)
        layout1.addWidget(self.box_Minutes)

        layout2.addWidget(self.question)
        layout3.addWidget(self.RadioGroupBox)                 #
        layout4.addWidget(self.btn_answer)

        layout_card.addLayout(layout1)
        layout_card.addLayout(layout2)

# ---       line.addLayout(layout3)
        layout_card.addLayout(layout3)                         #
# ---       layout_card.addLayout(line)
        layout_card.addLayout(layout4)


if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)
    ex = MainWindow()
    ex.show()
    sys.exit(app.exec_())

введите сюда описание изображения

→ Ссылка