如何显示与Pyqt5重叠的QWidget?

时间:2019-03-15 23:48:42

标签: python pyqt pyqt5

我有一个顶层小部件,其中包含一个布局集,并且还向该布局中添加了2个其他小部件,当我为它们全部着色时,我只会看到顶层小部件颜色,但我想在顶部看到子级小部件。这是我尝试过的方法,但是它只显示一个蓝色的QWidget,我期望红色和绿色的Widget相互重叠

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 个答案:

答案 0 :(得分:3)

这些小部件可见,但是您使用的背景色与父级小部件相同,因此要正确应用它们,您必须启用autoFillBackground属性:

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

enter image description here