Я хочу добавить 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_())
