Как я могу показать перекрывающиеся QWidgets с Pyqt5? - PullRequest
1 голос
/ 16 марта 2019

У меня есть виджет верхнего уровня с набором макетов и 2 других виджета, добавленных к этому макету, когда я их все окрашиваю, я вижу только цвет виджета верхнего уровня, но мне хотелось бы видеть дочерние виджеты сверху. Это то, что я пытался, но он просто отображает синий QWidget, я ожидаю красные и зеленые виджеты, один поверх другого

def set_color(widget, color):
    p = widget.palette()
    p.setColor(widget.backgroundRole(), color)
    widget.setPalette(p)

from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QWidget,QVBoxLayout
app = QApplication([])

win = QWidget()
win.show() 
win.resize(1920,1080)

vlayout = QVBoxLayout()
win.setLayout(vlayout)
set_color(win, Qt.blue)

mod_group = QWidget()
mod_layout = QHBoxLayout()
mod_group.setLayout(mod_layout)
vlayout.addWidget(mod_group)
set_color(mod_group, Qt.red)
mod_group.show()

audio_group = QWidget()
audio_layout = QHBoxLayout()
vlayout.addWidget(audio_group)
audio_group.setLayout(audio_layout)
set_color(audio_group, Qt.green)
audio_group.show()

1 Ответ

2 голосов
/ 16 марта 2019

Виджеты видны, но используемый вами цвет фона такой же, как и у родительского виджета, поэтому для их правильного применения необходимо включить свойство autoFillBackground :

mod_group.setAutoFillBackground(True)
audio_group.setAutoFillBackground(True)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...