我不明白为什么这些样式不起作用?请详细解释一下,我刚刚开始学习PyQt6库。
我有这段代码,我想SubWidget()对其应用样式,但是当我setstylesheet直接使用它时,它不起作用。
此外,和SubWidget()并未突出显示,尽管它们在代码中起作用。
我究竟做错了什么?.addWidgetremoveWidget
from PyQt6.QtCore import QSize.
from PyQt6.QtWidgets import QApplication, QMainWindow, QWidget, QPushButton, QLabel, QVBoxLayout, QHBoxLayout
import sys
class SubWidget(QWidget):
def __init__(self, label_text, button_text, parent_layout) -> None:
super().__init__()
self.setObjectName("subWidget")
self.layout = QHBoxLayout()
self.parent_layout = parent_layout
self.label = QLabel(label_text)
self.button_delete = QPushButton(button_text)
self.button_delete.clicked.connect(self.delete_widget)
self.layout.addWidget(self.label)
self.layout.addWidget(self.button_delete)
self.setLayout(self.layout)
def delete_widget(self):
self.setParent(None)
self.parent_layout.removeWidget(self)
self.deleteLater()
class MainWindow(QMainWindow):
def __init__(self) -> None:
super().__init__()
self.setObjectName("mainWindow")
self.setWindowTitle("Widget")
self.setFixedSize(QSize(350, 500))
central_widget = QWidget(self)
self.setCentralWidget(central_widget)
self.main_layout = QVBoxLayout(central_widget)
self.widget_layout = QVBoxLayout()
self.main_layout.addLayout(self.widget_layout)
create_label_btn = QPushButton("Create")
self.main_layout.addWidget(create_label_btn)
def create_label() -> None:
new_widget = SubWidget("New Label", "Delete", self.widget_layout)
self.widget_layout.addWidget(new_widget)
create_label_btn.clicked.connect(create_label)
StyleSheet = """
#mainWindow {
background-color: darkblue;
border-radius: 10px;
}
#subWidget {
border: 2px solid black;
margin: 5px;
padding: 5px;
background-color: lightgray;
}
QPushButton {
background-color: gray;
border: none;
padding: 5px;
}
"""
if __name__ == "__main__":
app = QApplication(sys.argv)
app.setStyleSheet(StyleSheet)
window = MainWindow()
window.show()
app.exec()
我稍微重写了您的代码,并为您记录了我所做的所有更改。您可以根据需要更改小部件的颜色,我这样做是为了让您可以看到所有内容。
将导入更改为 PyQt6 并尝试。