Мой код
import sys
from PyQt5.QtWidgets import *
class Test(QWidget):
def __init__(self):
super().__init__()
lay = QVBoxLayout(self)
lay.setContentsMargins(0, 0, 0, 0)
widget_1 = QWidget()
lay.addWidget(widget_1)
lay_2 = QVBoxLayout(widget_1)
label_1 = QLabel(widget_1)
label_1.setText("Test - 1")
label_1.setStyleSheet('background:{};margin:100'.format('yellow'))
lay_2.addWidget(label_1)
self.radio = QRadioButton()
self.radio.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)
self.radio.setStyleSheet('background:{};margin:100'.format('black'))
lay_2.addWidget(self.radio)
#face_widget = QWidget(self)
#face_widget.resize(widget_1.sizeHint().width(), widget_1.sizeHint().height())
#widget_2 = QWidget(face_widget)
widget_2 = QWidget(self)
widget_2.setStyleSheet('background:{}'.format('brown'))
widget_2.move(10,10)
#widget_2.resize(65, 55)
widget_2.raise_()
lay_3 = QVBoxLayout(widget_2)
lay_3.setSpacing(0)
lay_3.setContentsMargins(0, 0, 0, 0)
label_2 = QLabel(widget_2)
label_2.setText("Test - 2")
label_2.setStyleSheet('background:{}'.format('blue'))
lay_3.addWidget(label_2)
label_3 = QLabel(widget_2)
label_3.setText("Test - 3")
label_3.setStyleSheet('background:{}; padding:10'.format('red'))
lay_3.addWidget(label_3)
if __name__ == "__main__":
app = QApplication(sys.argv)
w = Test()
w.show()
sys.exit(app.exec_())
Моя проблема в том, что widget_2 не хочет динамически изменять свой размер, когда макет подключен к родителю.
Я не знаю, с чем это связано с. И я не знаю, как это исправить
Я получаю
Мне нужно
Мне нужно lay
, потому что оно определяет начальную точку widget_2
Мне нужно что-то, что lay
и widget_2
могли бы динамически изменять их размер в зависимости от на содержание
И мне нужно иметь возможность нажать на radio
без отслеживания его положения в пространстве. потому что если будет много кнопок, то пишите для каждого
self.x1r1, self.x2r1, self.y1r1, self.y2r1 = ..., ..., ..., ...
self.x1r2, self.x2r2, self.y1r2, self.y2r2 = ..., ..., ..., ...
self.x1r3, self.x2r3, self.y1r3, self.y2r3 = ..., ..., ..., ...
def onButtonClicked(self, id):
print(id)
def resizeEvent(self, event):
g1 = self.radio.geometry()
self.x1r1 = g1.x()
self.y1r1 = g1.y()
self.x2r1 = g1.x() + g1.width()
self.y2r1 = g1.y() + g1.height()
super().resizeEvent(event)
def mousePressEvent(self, event):
x = event.pos().x()
y = event.pos().y()
if (self.x1r1 < x < self.x2r1) and (self.y1r1 < y < self.y2r1):
self.radio.click()
, потребляющего слишком много энергии.