次のコード例を検討してください。
from PyQt5.QtWidgets import (QApplication, QHBoxLayout, QLabel, QWidget,
QMainWindow, QVBoxLayout, QTextEdit)
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
cwidget = QWidget(self)
cwidget.setStyleSheet("QWidget { background-color: red; }")
self.setCentralWidget(cwidget)
self.resize(100, 100)
vbox = QVBoxLayout(cwidget)
vbox.addWidget(QTextEdit(self))
vbox.addWidget(BlackBar(self))
class BlackBar(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.setStyleSheet("* { background-color: black; color: white; }")
hbox = QHBoxLayout(self)
hbox.setSpacing(5)
hbox.addWidget(QLabel(text="eggs"))
hbox.addWidget(QLabel(text="bacon"))
if __name__ == '__main__':
app = QApplication([])
main = MainWindow()
main.show()
app.exec_()
それは持っています:
- A
QMainWindow
、QWidget
中央ウィジェット ( red )として、中央ウィジェットQVBoxLayout
の子として。そこの中に:- A
QTextEdit
(フィラーとして) - A
QWidget
(黒)QHBoxLayout
。その中で:- 二
QLabels
- 二
- A
これは次のようになります。
QHBoxLayout
は の子であるため、ラベル間のスペースは黒であると予想されますが、その間は「見えず」、中央のウィジェットは「透けBlackBar
て見える」ようです。BlackBar
どうしてこれなの?