`从 PyQt6.QtCore 导入 QSize
从 PyQt6.QtWidgets 导入 QApplication、QMainWindow、QWidget、QPushButton、QLabel、QVBoxLayout、QHBoxLayout
导入 sys
class SubWidget(QWidget):
def init (self、label_text、button_text、parent_layout) -> None:
super(). init ()
self.setProperty("class", "sub-widget")| ||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 ) -> 无: super().
init () self.setProperty("class", "主窗口")
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("创建")
self.main_layout.addWidget(create_label_btn)
def create_label() -> 无:|| |new_widget = SubWidget("New Label", "Delete", self.widget_layout)
self.widget_layout.addWidget(new_widget)
`
idk 如何决定这个问题,我尝试了我所知道的一切
self.widget_layout.addWidget(new_widget)
`
idk how decide this problems, i try all what i know
几乎做到了!问题在于正在尝试将 CSS 类应用于的 QWidget,但没有以任何方式将这些类加载到的应用程序中。以下是修复代码的两种方法:
方法 1:使用 QSS 文件
-
创建 QSS 文件:
创建一个名为
style.qss
的新文件(或喜欢的任何名称),并添加的样式:
.sub-widget {
border: 1px solid red; /* 示例:添加红色边框 */
padding: 10px;
}
.main-window {
background-color: lightblue; /* 示例:更改背景颜色 */
}
-
在代码中加载 QSS:
在的 Python 代码中,在实例化
QApplication
之后加载 QSS 文件:
app = QApplication(sys.argv)
# 从文件加载样式表
with open("style.qss", "r") as f:
style = f.read()
app.setStyleSheet(style)
main_window = MainWindow()
main_window.show()
sys.exit(app.exec())
方法 2:在代码中直接设置样式
也可以在 Python 代码中直接设置样式,而无需单独的 QSS 文件。在
SubWidget
和
MainWindow
的
__init__
函数中,使用
setStyleSheet
方法:
class SubWidget(QWidget):
def __init__(self, label_text, button_text, parent_layout) -> None:
# ... 的现有代码 ...
self.setStyleSheet("border: 1px solid red; padding: 10px;")
class MainWindow(QMainWindow):
def __init__(self) -> None:
# ... 的现有代码 ...
self.setStyleSheet("background-color: lightblue;")
这两种方法都将实现相同的结果:将定义的 CSS 类应用于相应的部件。选择认为更易于管理和维护的方法。
标签:python,pyqt6 From: 78773539