python - 为什么继承另一个类的类不会产生与“另一个类”相同的结果?
问题描述
我正在使用 PyQt5 在 Python 中开发应用程序。这是有问题的代码:
class Dialog(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.layout = QtWidgets.QGridLayout()
self.main = QtWidgets.QWidget()
self.main.setLayout(self.layout)
self.setStyleSheet(QMainWindowStyle)
self.setCentralWidget(self.main)
self.show()
class AppearanceTab(QtWidgets.QWidget):
def __init__(self):
super().__init__()
class SettingsDialog(Dialog):
def __init__(self):
super().__init__()
self.tabs = QtWidgets.QTabWidget(self)
self.tabs.setStyleSheet(QTabWidgetStyle)
self.layout.addWidget(self.tabs)
self.tab_appearance = AppearanceTab()
self.tab_appearance.setStyleSheet(QWidgetStyle)
self.tab_appearance_layout = QtWidgets.QGridLayout()
self.tab_appearance.setLayout(self.tab_appearance_layout)
self.tabs.addTab(self.tab_appearance, "Appearance")
self.tab_server = QtWidgets.QWidget()
self.tab_server.setStyleSheet(QWidgetStyle)
self.tab_server_layout = QtWidgets.QGridLayout()
self.tab_server.setLayout(self.tab_server_layout)
self.tabs.addTab(self.tab_server, "Server")
为什么什么时候self.tab_appearance
是一个AppearanceTab
实例(应该是 的副本QWidget
)它具有与什么时候的实例不同的样式(self.tab_server
即背景颜色更改)?self.tab_server
QWidget
样式表只定义了background-color: #333333
和color: #dddddd
。
提前致谢。
编辑:
我相信样式表没有被正确应用到AppearanceTab
,但是我不知道为什么会看到它只是继承自QWidget
.
编辑2:
可以在 github上找到 MCVE(以及我的项目的其余部分) 。
解决方案
在文档中,有一段关于继承和样式的段落:
遗产
在经典 CSS 中,当项目的字体和颜色没有明确设置时,它会自动从父项继承。使用 Qt 样式表时,小部件不会自动从其父小部件继承其字体和颜色设置。
如果我们想为 QGroupBox 及其子对象设置颜色,我们可以这样写:
qApp->setStyleSheet("QGroupBox, QGroupBox * { color: red; }");
所以你可能想改变
QMainWindowStyle = QMainWindow {color: #dddddd; background-color: #333333;}
至
QMainWindowStyle = QMainWindow, QMainWindow * {color: #dddddd; background-color: #333333;}
这样主窗口的所有子窗口小部件都具有相同的样式。
推荐阅读
- accessibility - 屏幕阅读器和浏览器事件
- c++ - 将函数作为可变参数模板参数传递,并调用它们
- python - 自动礼物的循环问题
- c# - 从 VS 构建中的 Release/Debug 文件夹中删除 DLL
- database - 无法使用 JDBC 连接到 Oracle 11g 企业版
- julia - 结合位置、关键字和默认参数并记录它们的 Julian 方法是什么?
- symfony - 使用访问控制拒绝返回访问
- html - translateY后如何摆脱div下方的空白
- json - 在 golang 中持久化嵌套结构
- javascript - 如何创建一个从 API 获取信息的接口?