I'm going to separate files on pyside6. I divided Widget and separated files in my own way, but the results are different. Why is it different?
import sys
from PySide6.QtWidgets import (
QApplication,
QMainWindow,
QHBoxLayout,
QWidget,
QVBoxLayout,
QLabel,
)
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Test")
self.setGeometry(100, 100, 300, 200)
central_widget = QWidget()
widgetsss = QWidget()
title_1 = QLabel("Title 1")
title_2 = QLabel("Title 2")
title_3 = QLabel("Title 3")
layout = QVBoxLayout()
layout.addWidget(title_1)
layout.addWidget(title_2)
layout.addWidget(title_3)
widgetsss.setLayout(layout)
widgetsss.setStyleSheet("background-color:blue;")
layout = QHBoxLayout(central_widget)
layout.addWidget(widgetsss)
self.setCentralWidget(central_widget)
Result is
other is
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Test")
self.setGeometry(100, 100, 300, 200)
central_widget = QWidget()
widgetsss = anoterwidget()
widgetsss.setStyleSheet("background-color:lightgreen;")
layout = QHBoxLayout(central_widget)
layout.addWidget(widgetsss)
self.setCentralWidget(central_widget)
class anoterwidget(QWidget):
def __init__(self):
super().__init__()
title_1 = QLabel("Title 1")
title_2 = QLabel("Title 2")
title_3 = QLabel("Title 3")
layout = QVBoxLayout()
layout.addWidget(title_1)
layout.addWidget(title_2)
layout.addWidget(title_3)
self.setLayout(layout)
result is
Why is there such a difference?
Changing colors via set style-sheets can have undesired side effects. In order to control this a bit better, always mention which component you want to modify, e.g. QLabel { #css_goes_here }
:
from PySide6.QtCore import Qt
from PySide6.QtWidgets import (
QApplication,
QMainWindow,
QWidget,
QVBoxLayout,
QLabel,
)
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Single Class")
widg = QWidget()
layout = QVBoxLayout()
title_1 = QLabel("Title 1")
title_2 = QLabel("Title 2")
title_3 = QLabel("Title 3")
layout.addWidget(title_1)
layout.addWidget(title_2)
layout.addWidget(title_3)
widg.setLayout(layout)
p = widg.palette()
p.setColor(self.backgroundRole(), Qt.red)
widg.setPalette(p)
widg.setStyleSheet("QLabel {background-color:pink;}")
self.setCentralWidget(widg)
class MainWindow2(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Double Class")
widg = anoterwidget()
widg.setStyleSheet("QLabel {background-color:lightgreen;}")
self.setCentralWidget(widg)
class anoterwidget(QWidget):
def __init__(self):
super().__init__()
layout = QVBoxLayout()
title_1 = QLabel("Title 1")
title_2 = QLabel("Title 2")
title_3 = QLabel("Title 3")
layout.addWidget(title_1)
layout.addWidget(title_2)
layout.addWidget(title_3)
self.setLayout(layout)
if __name__ == "__main__":
app = QApplication([])
window = MainWindow()
window2 = MainWindow2()
window.show()
window2.show()
app.exec()